Coverage Report

Created: 2024-08-16 00:24

D:\a\vk-layer-for-rust\vk-layer-for-rust\vulkan-layer\src\global_simple_intercept\generated.rs
Line
Count
Source (jump to first uncovered line)
1
// Copyright 2024 Google LLC
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#![allow(missing_docs)]
16
// This file is generated from the Vulkan XML API registry.
17
#![allow(unused_unsafe)]
18
use ash::vk;
19
use smallvec::smallvec;
20
use std::{
21
    borrow::Borrow,
22
    collections::HashSet,
23
    ffi::{c_char, c_int, c_void, CStr},
24
    ptr::NonNull,
25
    sync::Arc,
26
};
27
28
use super::{
29
    bool_iterator_from_raw_parts, get_device_proc_addr_loader, get_instance_proc_addr_loader,
30
    maybe_slice_from_raw_parts, maybe_uninit_slice_from_raw_parts_mut,
31
    uninit_slice_from_raw_parts_mut, ApiVersion, Feature, TryFromExtensionError, VulkanCommand,
32
};
33
use crate::{
34
    fill_vk_out_array,
35
    vk_utils::{ptr_as_uninit_mut, slice_from_raw_parts},
36
    DeviceHooks, DeviceInfo, Global, InstanceHooks, InstanceInfo, Layer, LayerResult,
37
    LayerVulkanCommand,
38
};
39
40
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
41
pub enum Extension {
42
    KHRSurface,
43
    KHRSwapchain,
44
    KHRDisplay,
45
    KHRDisplaySwapchain,
46
    KHRXlibSurface,
47
    KHRXcbSurface,
48
    KHRWaylandSurface,
49
    KHRAndroidSurface,
50
    KHRWin32Surface,
51
    KHRSamplerMirrorClampToEdge,
52
    KHRVideoQueue,
53
    KHRVideoDecodeQueue,
54
    KHRVideoDecodeH264,
55
    KHRDynamicRendering,
56
    KHRMultiview,
57
    KHRGetPhysicalDeviceProperties2,
58
    KHRDeviceGroup,
59
    KHRShaderDrawParameters,
60
    KHRMaintenance1,
61
    KHRDeviceGroupCreation,
62
    KHRExternalMemoryCapabilities,
63
    KHRExternalMemory,
64
    KHRExternalMemoryWin32,
65
    KHRExternalMemoryFd,
66
    KHRWin32KeyedMutex,
67
    KHRExternalSemaphoreCapabilities,
68
    KHRExternalSemaphore,
69
    KHRExternalSemaphoreWin32,
70
    KHRExternalSemaphoreFd,
71
    KHRPushDescriptor,
72
    KHRShaderFloat16Int8,
73
    KHR16bitStorage,
74
    KHRIncrementalPresent,
75
    KHRDescriptorUpdateTemplate,
76
    KHRImagelessFramebuffer,
77
    KHRCreateRenderpass2,
78
    KHRSharedPresentableImage,
79
    KHRExternalFenceCapabilities,
80
    KHRExternalFence,
81
    KHRExternalFenceWin32,
82
    KHRExternalFenceFd,
83
    KHRPerformanceQuery,
84
    KHRMaintenance2,
85
    KHRGetSurfaceCapabilities2,
86
    KHRVariablePointers,
87
    KHRGetDisplayProperties2,
88
    KHRDedicatedAllocation,
89
    KHRStorageBufferStorageClass,
90
    KHRRelaxedBlockLayout,
91
    KHRGetMemoryRequirements2,
92
    KHRImageFormatList,
93
    KHRSamplerYcbcrConversion,
94
    KHRBindMemory2,
95
    KHRPortabilitySubset,
96
    KHRMaintenance3,
97
    KHRDrawIndirectCount,
98
    KHRShaderSubgroupExtendedTypes,
99
    KHR8bitStorage,
100
    KHRShaderAtomicInt64,
101
    KHRShaderClock,
102
    KHRVideoDecodeH265,
103
    KHRGlobalPriority,
104
    KHRDriverProperties,
105
    KHRShaderFloatControls,
106
    KHRDepthStencilResolve,
107
    KHRSwapchainMutableFormat,
108
    KHRTimelineSemaphore,
109
    KHRVulkanMemoryModel,
110
    KHRShaderTerminateInvocation,
111
    KHRFragmentShadingRate,
112
    KHRSpirv14,
113
    KHRSurfaceProtectedCapabilities,
114
    KHRSeparateDepthStencilLayouts,
115
    KHRPresentWait,
116
    KHRUniformBufferStandardLayout,
117
    KHRBufferDeviceAddress,
118
    KHRDeferredHostOperations,
119
    KHRPipelineExecutableProperties,
120
    KHRMapMemory2,
121
    KHRShaderIntegerDotProduct,
122
    KHRPipelineLibrary,
123
    KHRShaderNonSemanticInfo,
124
    KHRPresentId,
125
    KHRVideoEncodeQueue,
126
    KHRSynchronization2,
127
    KHRFragmentShaderBarycentric,
128
    KHRShaderSubgroupUniformControlFlow,
129
    KHRZeroInitializeWorkgroupMemory,
130
    KHRWorkgroupMemoryExplicitLayout,
131
    KHRCopyCommands2,
132
    KHRFormatFeatureFlags2,
133
    KHRRayTracingMaintenance1,
134
    KHRPortabilityEnumeration,
135
    KHRMaintenance4,
136
    KHRRayTracingPositionFetch,
137
    ANDROIDNativeBuffer,
138
    EXTDebugReport,
139
    NVGlslShader,
140
    EXTDepthRangeUnrestricted,
141
    IMGFilterCubic,
142
    AMDRasterizationOrder,
143
    AMDShaderTrinaryMinmax,
144
    AMDShaderExplicitVertexParameter,
145
    EXTDebugMarker,
146
    AMDGcnShader,
147
    NVDedicatedAllocation,
148
    EXTTransformFeedback,
149
    NVXBinaryImport,
150
    NVXImageViewHandle,
151
    AMDDrawIndirectCount,
152
    AMDNegativeViewportHeight,
153
    AMDGpuShaderHalfFloat,
154
    AMDShaderBallot,
155
    EXTVideoEncodeH264,
156
    EXTVideoEncodeH265,
157
    AMDTextureGatherBiasLod,
158
    AMDShaderInfo,
159
    AMDShaderImageLoadStoreLod,
160
    GGPStreamDescriptorSurface,
161
    NVCornerSampledImage,
162
    IMGFormatPvrtc,
163
    NVExternalMemoryCapabilities,
164
    NVExternalMemory,
165
    NVExternalMemoryWin32,
166
    NVWin32KeyedMutex,
167
    EXTValidationFlags,
168
    NNViSurface,
169
    EXTShaderSubgroupBallot,
170
    EXTShaderSubgroupVote,
171
    EXTTextureCompressionAstcHdr,
172
    EXTAstcDecodeMode,
173
    EXTPipelineRobustness,
174
    EXTConditionalRendering,
175
    NVClipSpaceWScaling,
176
    EXTDirectModeDisplay,
177
    EXTAcquireXlibDisplay,
178
    EXTDisplaySurfaceCounter,
179
    EXTDisplayControl,
180
    GOOGLEDisplayTiming,
181
    NVSampleMaskOverrideCoverage,
182
    NVGeometryShaderPassthrough,
183
    NVViewportArray2,
184
    NVXMultiviewPerViewAttributes,
185
    NVViewportSwizzle,
186
    EXTDiscardRectangles,
187
    EXTConservativeRasterization,
188
    EXTDepthClipEnable,
189
    EXTSwapchainColorspace,
190
    EXTHdrMetadata,
191
    MVKIosSurface,
192
    MVKMacosSurface,
193
    EXTExternalMemoryDmaBuf,
194
    EXTQueueFamilyForeign,
195
    EXTDebugUtils,
196
    ANDROIDExternalMemoryAndroidHardwareBuffer,
197
    EXTSamplerFilterMinmax,
198
    AMDGpuShaderInt16,
199
    AMDMixedAttachmentSamples,
200
    AMDShaderFragmentMask,
201
    EXTInlineUniformBlock,
202
    EXTShaderStencilExport,
203
    EXTSampleLocations,
204
    EXTBlendOperationAdvanced,
205
    NVFragmentCoverageToColor,
206
    NVFramebufferMixedSamples,
207
    NVFillRectangle,
208
    NVShaderSmBuiltins,
209
    EXTPostDepthCoverage,
210
    EXTImageDrmFormatModifier,
211
    EXTValidationCache,
212
    EXTDescriptorIndexing,
213
    EXTShaderViewportIndexLayer,
214
    NVShadingRateImage,
215
    NVRayTracing,
216
    NVRepresentativeFragmentTest,
217
    EXTFilterCubic,
218
    QCOMRenderPassShaderResolve,
219
    EXTGlobalPriority,
220
    EXTExternalMemoryHost,
221
    AMDBufferMarker,
222
    AMDPipelineCompilerControl,
223
    EXTCalibratedTimestamps,
224
    AMDShaderCoreProperties,
225
    AMDMemoryOverallocationBehavior,
226
    EXTVertexAttributeDivisor,
227
    GGPFrameToken,
228
    EXTPipelineCreationFeedback,
229
    NVShaderSubgroupPartitioned,
230
    NVComputeShaderDerivatives,
231
    NVMeshShader,
232
    NVFragmentShaderBarycentric,
233
    NVShaderImageFootprint,
234
    NVScissorExclusive,
235
    NVDeviceDiagnosticCheckpoints,
236
    INTELShaderIntegerFunctions2,
237
    INTELPerformanceQuery,
238
    EXTPciBusInfo,
239
    AMDDisplayNativeHdr,
240
    FUCHSIAImagepipeSurface,
241
    EXTMetalSurface,
242
    EXTFragmentDensityMap,
243
    EXTScalarBlockLayout,
244
    GOOGLEHlslFunctionality1,
245
    GOOGLEDecorateString,
246
    EXTSubgroupSizeControl,
247
    AMDShaderCoreProperties2,
248
    AMDDeviceCoherentMemory,
249
    EXTShaderImageAtomicInt64,
250
    EXTMemoryBudget,
251
    EXTMemoryPriority,
252
    NVDedicatedAllocationImageAliasing,
253
    EXTBufferDeviceAddress,
254
    EXTToolingInfo,
255
    EXTSeparateStencilUsage,
256
    EXTValidationFeatures,
257
    NVCooperativeMatrix,
258
    NVCoverageReductionMode,
259
    EXTFragmentShaderInterlock,
260
    EXTYcbcrImageArrays,
261
    EXTProvokingVertex,
262
    EXTFullScreenExclusive,
263
    EXTHeadlessSurface,
264
    EXTLineRasterization,
265
    EXTShaderAtomicFloat,
266
    EXTHostQueryReset,
267
    EXTIndexTypeUint8,
268
    EXTExtendedDynamicState,
269
    EXTShaderAtomicFloat2,
270
    EXTSurfaceMaintenance1,
271
    EXTSwapchainMaintenance1,
272
    EXTShaderDemoteToHelperInvocation,
273
    NVDeviceGeneratedCommands,
274
    NVInheritedViewportScissor,
275
    EXTTexelBufferAlignment,
276
    QCOMRenderPassTransform,
277
    EXTDeviceMemoryReport,
278
    EXTAcquireDrmDisplay,
279
    EXTRobustness2,
280
    EXTCustomBorderColor,
281
    GOOGLEUserType,
282
    NVPresentBarrier,
283
    EXTPrivateData,
284
    EXTPipelineCreationCacheControl,
285
    NVDeviceDiagnosticsConfig,
286
    QCOMRenderPassStoreOps,
287
    NVLowLatency,
288
    EXTMetalObjects,
289
    EXTDescriptorBuffer,
290
    EXTGraphicsPipelineLibrary,
291
    AMDShaderEarlyAndLateFragmentTests,
292
    NVFragmentShadingRateEnums,
293
    NVRayTracingMotionBlur,
294
    EXTYcbcr2plane444Formats,
295
    EXTFragmentDensityMap2,
296
    QCOMRotatedCopyCommands,
297
    EXTImageRobustness,
298
    EXTImageCompressionControl,
299
    EXTAttachmentFeedbackLoopLayout,
300
    EXT4444Formats,
301
    EXTDeviceFault,
302
    ARMRasterizationOrderAttachmentAccess,
303
    EXTRgba10x6Formats,
304
    NVAcquireWinrtDisplay,
305
    EXTDirectfbSurface,
306
    VALVEMutableDescriptorType,
307
    EXTVertexInputDynamicState,
308
    EXTPhysicalDeviceDrm,
309
    EXTDeviceAddressBindingReport,
310
    EXTDepthClipControl,
311
    EXTPrimitiveTopologyListRestart,
312
    FUCHSIAExternalMemory,
313
    FUCHSIAExternalSemaphore,
314
    FUCHSIABufferCollection,
315
    HUAWEISubpassShading,
316
    HUAWEIInvocationMask,
317
    NVExternalMemoryRdma,
318
    EXTPipelineProperties,
319
    EXTMultisampledRenderToSingleSampled,
320
    EXTExtendedDynamicState2,
321
    QNXScreenSurface,
322
    EXTColorWriteEnable,
323
    EXTPrimitivesGeneratedQuery,
324
    EXTGlobalPriorityQuery,
325
    EXTImageViewMinLod,
326
    EXTMultiDraw,
327
    EXTImage2dViewOf3d,
328
    EXTShaderTileImage,
329
    EXTOpacityMicromap,
330
    NVDisplacementMicromap,
331
    EXTLoadStoreOpNone,
332
    HUAWEIClusterCullingShader,
333
    EXTBorderColorSwizzle,
334
    EXTPageableDeviceLocalMemory,
335
    ARMShaderCoreProperties,
336
    EXTImageSlicedViewOf3d,
337
    VALVEDescriptorSetHostMapping,
338
    EXTDepthClampZeroOne,
339
    EXTNonSeamlessCubeMap,
340
    QCOMFragmentDensityMapOffset,
341
    NVCopyMemoryIndirect,
342
    NVMemoryDecompression,
343
    NVLinearColorAttachment,
344
    GOOGLESurfacelessQuery,
345
    EXTImageCompressionControlSwapchain,
346
    QCOMImageProcessing,
347
    EXTExtendedDynamicState3,
348
    EXTSubpassMergeFeedback,
349
    LUNARGDirectDriverLoading,
350
    EXTShaderModuleIdentifier,
351
    EXTRasterizationOrderAttachmentAccess,
352
    NVOpticalFlow,
353
    EXTLegacyDithering,
354
    EXTPipelineProtectedAccess,
355
    EXTShaderObject,
356
    QCOMTileProperties,
357
    SECAmigoProfiling,
358
    QCOMMultiviewPerViewViewports,
359
    NVRayTracingInvocationReorder,
360
    EXTMutableDescriptorType,
361
    ARMShaderCoreBuiltins,
362
    EXTPipelineLibraryGroupHandles,
363
    EXTDynamicRenderingUnusedAttachments,
364
    QCOMMultiviewPerViewRenderAreas,
365
    EXTAttachmentFeedbackLoopDynamicState,
366
    KHRAccelerationStructure,
367
    KHRRayTracingPipeline,
368
    KHRRayQuery,
369
    EXTMeshShader,
370
}
371
372
impl TryFrom<&str> for Extension {
373
    type Error = TryFromExtensionError;
374
375
44
    fn try_from(value: &str) -> Result<Self, Self::Error> {
376
44
        match value {
377
44
            "VK_KHR_surface" => 
Ok(Extension::KHRSurface)16
,
378
28
            "VK_KHR_swapchain" => 
Ok(Extension::KHRSwapchain)16
,
379
12
            "VK_KHR_display" => 
Ok(Extension::KHRDisplay)0
,
380
12
            "VK_KHR_display_swapchain" => 
Ok(Extension::KHRDisplaySwapchain)0
,
381
12
            "VK_KHR_xlib_surface" => 
Ok(Extension::KHRXlibSurface)0
,
382
12
            "VK_KHR_xcb_surface" => 
Ok(Extension::KHRXcbSurface)0
,
383
12
            "VK_KHR_wayland_surface" => 
Ok(Extension::KHRWaylandSurface)0
,
384
12
            "VK_KHR_android_surface" => 
Ok(Extension::KHRAndroidSurface)0
,
385
12
            "VK_KHR_win32_surface" => 
Ok(Extension::KHRWin32Surface)0
,
386
12
            "VK_KHR_sampler_mirror_clamp_to_edge" => 
Ok(Extension::KHRSamplerMirrorClampToEdge)0
,
387
12
            "VK_KHR_video_queue" => 
Ok(Extension::KHRVideoQueue)0
,
388
12
            "VK_KHR_video_decode_queue" => 
Ok(Extension::KHRVideoDecodeQueue)0
,
389
12
            "VK_KHR_video_decode_h264" => 
Ok(Extension::KHRVideoDecodeH264)0
,
390
12
            "VK_KHR_dynamic_rendering" => 
Ok(Extension::KHRDynamicRendering)0
,
391
12
            "VK_KHR_multiview" => 
Ok(Extension::KHRMultiview)0
,
392
12
            "VK_KHR_get_physical_device_properties2" => {
393
7
                Ok(Extension::KHRGetPhysicalDeviceProperties2)
394
            }
395
5
            "VK_KHR_device_group" => 
Ok(Extension::KHRDeviceGroup)0
,
396
5
            "VK_KHR_shader_draw_parameters" => 
Ok(Extension::KHRShaderDrawParameters)0
,
397
5
            "VK_KHR_maintenance1" => 
Ok(Extension::KHRMaintenance1)0
,
398
5
            "VK_KHR_device_group_creation" => 
Ok(Extension::KHRDeviceGroupCreation)0
,
399
5
            "VK_KHR_external_memory_capabilities" => 
Ok(Extension::KHRExternalMemoryCapabilities)2
,
400
3
            "VK_KHR_external_memory" => 
Ok(Extension::KHRExternalMemory)0
,
401
3
            "VK_KHR_external_memory_win32" => 
Ok(Extension::KHRExternalMemoryWin32)0
,
402
3
            "VK_KHR_external_memory_fd" => 
Ok(Extension::KHRExternalMemoryFd)0
,
403
3
            "VK_KHR_win32_keyed_mutex" => 
Ok(Extension::KHRWin32KeyedMutex)0
,
404
3
            "VK_KHR_external_semaphore_capabilities" => {
405
0
                Ok(Extension::KHRExternalSemaphoreCapabilities)
406
            }
407
3
            "VK_KHR_external_semaphore" => 
Ok(Extension::KHRExternalSemaphore)0
,
408
3
            "VK_KHR_external_semaphore_win32" => 
Ok(Extension::KHRExternalSemaphoreWin32)0
,
409
3
            "VK_KHR_external_semaphore_fd" => 
Ok(Extension::KHRExternalSemaphoreFd)0
,
410
3
            "VK_KHR_push_descriptor" => 
Ok(Extension::KHRPushDescriptor)0
,
411
3
            "VK_KHR_shader_float16_int8" => 
Ok(Extension::KHRShaderFloat16Int8)0
,
412
3
            "VK_KHR_16bit_storage" => 
Ok(Extension::KHR16bitStorage)0
,
413
3
            "VK_KHR_incremental_present" => 
Ok(Extension::KHRIncrementalPresent)0
,
414
3
            "VK_KHR_descriptor_update_template" => 
Ok(Extension::KHRDescriptorUpdateTemplate)0
,
415
3
            "VK_KHR_imageless_framebuffer" => 
Ok(Extension::KHRImagelessFramebuffer)0
,
416
3
            "VK_KHR_create_renderpass2" => 
Ok(Extension::KHRCreateRenderpass2)0
,
417
3
            "VK_KHR_shared_presentable_image" => 
Ok(Extension::KHRSharedPresentableImage)0
,
418
3
            "VK_KHR_external_fence_capabilities" => 
Ok(Extension::KHRExternalFenceCapabilities)0
,
419
3
            "VK_KHR_external_fence" => 
Ok(Extension::KHRExternalFence)0
,
420
3
            "VK_KHR_external_fence_win32" => 
Ok(Extension::KHRExternalFenceWin32)0
,
421
3
            "VK_KHR_external_fence_fd" => 
Ok(Extension::KHRExternalFenceFd)0
,
422
3
            "VK_KHR_performance_query" => 
Ok(Extension::KHRPerformanceQuery)0
,
423
3
            "VK_KHR_maintenance2" => 
Ok(Extension::KHRMaintenance2)0
,
424
3
            "VK_KHR_get_surface_capabilities2" => 
Ok(Extension::KHRGetSurfaceCapabilities2)0
,
425
3
            "VK_KHR_variable_pointers" => 
Ok(Extension::KHRVariablePointers)0
,
426
3
            "VK_KHR_get_display_properties2" => 
Ok(Extension::KHRGetDisplayProperties2)0
,
427
3
            "VK_KHR_dedicated_allocation" => 
Ok(Extension::KHRDedicatedAllocation)0
,
428
3
            "VK_KHR_storage_buffer_storage_class" => 
Ok(Extension::KHRStorageBufferStorageClass)0
,
429
3
            "VK_KHR_relaxed_block_layout" => 
Ok(Extension::KHRRelaxedBlockLayout)0
,
430
3
            "VK_KHR_get_memory_requirements2" => 
Ok(Extension::KHRGetMemoryRequirements2)0
,
431
3
            "VK_KHR_image_format_list" => 
Ok(Extension::KHRImageFormatList)0
,
432
3
            "VK_KHR_sampler_ycbcr_conversion" => 
Ok(Extension::KHRSamplerYcbcrConversion)0
,
433
3
            "VK_KHR_bind_memory2" => 
Ok(Extension::KHRBindMemory2)0
,
434
3
            "VK_KHR_portability_subset" => 
Ok(Extension::KHRPortabilitySubset)0
,
435
3
            "VK_KHR_maintenance3" => 
Ok(Extension::KHRMaintenance3)0
,
436
3
            "VK_KHR_draw_indirect_count" => 
Ok(Extension::KHRDrawIndirectCount)0
,
437
3
            "VK_KHR_shader_subgroup_extended_types" => {
438
0
                Ok(Extension::KHRShaderSubgroupExtendedTypes)
439
            }
440
3
            "VK_KHR_8bit_storage" => 
Ok(Extension::KHR8bitStorage)0
,
441
3
            "VK_KHR_shader_atomic_int64" => 
Ok(Extension::KHRShaderAtomicInt64)0
,
442
3
            "VK_KHR_shader_clock" => 
Ok(Extension::KHRShaderClock)0
,
443
3
            "VK_KHR_video_decode_h265" => 
Ok(Extension::KHRVideoDecodeH265)0
,
444
3
            "VK_KHR_global_priority" => 
Ok(Extension::KHRGlobalPriority)0
,
445
3
            "VK_KHR_driver_properties" => 
Ok(Extension::KHRDriverProperties)0
,
446
3
            "VK_KHR_shader_float_controls" => 
Ok(Extension::KHRShaderFloatControls)0
,
447
3
            "VK_KHR_depth_stencil_resolve" => 
Ok(Extension::KHRDepthStencilResolve)0
,
448
3
            "VK_KHR_swapchain_mutable_format" => 
Ok(Extension::KHRSwapchainMutableFormat)0
,
449
3
            "VK_KHR_timeline_semaphore" => 
Ok(Extension::KHRTimelineSemaphore)0
,
450
3
            "VK_KHR_vulkan_memory_model" => 
Ok(Extension::KHRVulkanMemoryModel)0
,
451
3
            "VK_KHR_shader_terminate_invocation" => 
Ok(Extension::KHRShaderTerminateInvocation)0
,
452
3
            "VK_KHR_fragment_shading_rate" => 
Ok(Extension::KHRFragmentShadingRate)0
,
453
3
            "VK_KHR_spirv_1_4" => 
Ok(Extension::KHRSpirv14)0
,
454
3
            "VK_KHR_surface_protected_capabilities" => {
455
0
                Ok(Extension::KHRSurfaceProtectedCapabilities)
456
            }
457
3
            "VK_KHR_separate_depth_stencil_layouts" => {
458
0
                Ok(Extension::KHRSeparateDepthStencilLayouts)
459
            }
460
3
            "VK_KHR_present_wait" => 
Ok(Extension::KHRPresentWait)0
,
461
3
            "VK_KHR_uniform_buffer_standard_layout" => {
462
0
                Ok(Extension::KHRUniformBufferStandardLayout)
463
            }
464
3
            "VK_KHR_buffer_device_address" => 
Ok(Extension::KHRBufferDeviceAddress)0
,
465
3
            "VK_KHR_deferred_host_operations" => 
Ok(Extension::KHRDeferredHostOperations)0
,
466
3
            "VK_KHR_pipeline_executable_properties" => {
467
0
                Ok(Extension::KHRPipelineExecutableProperties)
468
            }
469
3
            "VK_KHR_map_memory2" => 
Ok(Extension::KHRMapMemory2)0
,
470
3
            "VK_KHR_shader_integer_dot_product" => 
Ok(Extension::KHRShaderIntegerDotProduct)0
,
471
3
            "VK_KHR_pipeline_library" => 
Ok(Extension::KHRPipelineLibrary)0
,
472
3
            "VK_KHR_shader_non_semantic_info" => 
Ok(Extension::KHRShaderNonSemanticInfo)0
,
473
3
            "VK_KHR_present_id" => 
Ok(Extension::KHRPresentId)0
,
474
3
            "VK_KHR_video_encode_queue" => 
Ok(Extension::KHRVideoEncodeQueue)0
,
475
3
            "VK_KHR_synchronization2" => 
Ok(Extension::KHRSynchronization2)0
,
476
3
            "VK_KHR_fragment_shader_barycentric" => 
Ok(Extension::KHRFragmentShaderBarycentric)0
,
477
3
            "VK_KHR_shader_subgroup_uniform_control_flow" => {
478
0
                Ok(Extension::KHRShaderSubgroupUniformControlFlow)
479
            }
480
3
            "VK_KHR_zero_initialize_workgroup_memory" => {
481
0
                Ok(Extension::KHRZeroInitializeWorkgroupMemory)
482
            }
483
3
            "VK_KHR_workgroup_memory_explicit_layout" => {
484
0
                Ok(Extension::KHRWorkgroupMemoryExplicitLayout)
485
            }
486
3
            "VK_KHR_copy_commands2" => 
Ok(Extension::KHRCopyCommands2)0
,
487
3
            "VK_KHR_format_feature_flags2" => 
Ok(Extension::KHRFormatFeatureFlags2)0
,
488
3
            "VK_KHR_ray_tracing_maintenance1" => 
Ok(Extension::KHRRayTracingMaintenance1)0
,
489
3
            "VK_KHR_portability_enumeration" => 
Ok(Extension::KHRPortabilityEnumeration)0
,
490
3
            "VK_KHR_maintenance4" => 
Ok(Extension::KHRMaintenance4)0
,
491
3
            "VK_KHR_ray_tracing_position_fetch" => 
Ok(Extension::KHRRayTracingPositionFetch)0
,
492
3
            "VK_ANDROID_native_buffer" => 
Ok(Extension::ANDROIDNativeBuffer)0
,
493
3
            "VK_EXT_debug_report" => 
Ok(Extension::EXTDebugReport)0
,
494
3
            "VK_NV_glsl_shader" => 
Ok(Extension::NVGlslShader)0
,
495
3
            "VK_EXT_depth_range_unrestricted" => 
Ok(Extension::EXTDepthRangeUnrestricted)0
,
496
3
            "VK_IMG_filter_cubic" => 
Ok(Extension::IMGFilterCubic)0
,
497
3
            "VK_AMD_rasterization_order" => 
Ok(Extension::AMDRasterizationOrder)0
,
498
3
            "VK_AMD_shader_trinary_minmax" => 
Ok(Extension::AMDShaderTrinaryMinmax)0
,
499
3
            "VK_AMD_shader_explicit_vertex_parameter" => {
500
0
                Ok(Extension::AMDShaderExplicitVertexParameter)
501
            }
502
3
            "VK_EXT_debug_marker" => 
Ok(Extension::EXTDebugMarker)0
,
503
3
            "VK_AMD_gcn_shader" => 
Ok(Extension::AMDGcnShader)0
,
504
3
            "VK_NV_dedicated_allocation" => 
Ok(Extension::NVDedicatedAllocation)0
,
505
3
            "VK_EXT_transform_feedback" => 
Ok(Extension::EXTTransformFeedback)0
,
506
3
            "VK_NVX_binary_import" => 
Ok(Extension::NVXBinaryImport)0
,
507
3
            "VK_NVX_image_view_handle" => 
Ok(Extension::NVXImageViewHandle)0
,
508
3
            "VK_AMD_draw_indirect_count" => 
Ok(Extension::AMDDrawIndirectCount)0
,
509
3
            "VK_AMD_negative_viewport_height" => 
Ok(Extension::AMDNegativeViewportHeight)0
,
510
3
            "VK_AMD_gpu_shader_half_float" => 
Ok(Extension::AMDGpuShaderHalfFloat)0
,
511
3
            "VK_AMD_shader_ballot" => 
Ok(Extension::AMDShaderBallot)0
,
512
3
            "VK_EXT_video_encode_h264" => 
Ok(Extension::EXTVideoEncodeH264)0
,
513
3
            "VK_EXT_video_encode_h265" => 
Ok(Extension::EXTVideoEncodeH265)0
,
514
3
            "VK_AMD_texture_gather_bias_lod" => 
Ok(Extension::AMDTextureGatherBiasLod)0
,
515
3
            "VK_AMD_shader_info" => 
Ok(Extension::AMDShaderInfo)0
,
516
3
            "VK_AMD_shader_image_load_store_lod" => 
Ok(Extension::AMDShaderImageLoadStoreLod)0
,
517
3
            "VK_GGP_stream_descriptor_surface" => 
Ok(Extension::GGPStreamDescriptorSurface)0
,
518
3
            "VK_NV_corner_sampled_image" => 
Ok(Extension::NVCornerSampledImage)0
,
519
3
            "VK_IMG_format_pvrtc" => 
Ok(Extension::IMGFormatPvrtc)0
,
520
3
            "VK_NV_external_memory_capabilities" => 
Ok(Extension::NVExternalMemoryCapabilities)0
,
521
3
            "VK_NV_external_memory" => 
Ok(Extension::NVExternalMemory)0
,
522
3
            "VK_NV_external_memory_win32" => 
Ok(Extension::NVExternalMemoryWin32)0
,
523
3
            "VK_NV_win32_keyed_mutex" => 
Ok(Extension::NVWin32KeyedMutex)0
,
524
3
            "VK_EXT_validation_flags" => 
Ok(Extension::EXTValidationFlags)0
,
525
3
            "VK_NN_vi_surface" => 
Ok(Extension::NNViSurface)0
,
526
3
            "VK_EXT_shader_subgroup_ballot" => 
Ok(Extension::EXTShaderSubgroupBallot)0
,
527
3
            "VK_EXT_shader_subgroup_vote" => 
Ok(Extension::EXTShaderSubgroupVote)0
,
528
3
            "VK_EXT_texture_compression_astc_hdr" => 
Ok(Extension::EXTTextureCompressionAstcHdr)0
,
529
3
            "VK_EXT_astc_decode_mode" => 
Ok(Extension::EXTAstcDecodeMode)0
,
530
3
            "VK_EXT_pipeline_robustness" => 
Ok(Extension::EXTPipelineRobustness)0
,
531
3
            "VK_EXT_conditional_rendering" => 
Ok(Extension::EXTConditionalRendering)0
,
532
3
            "VK_NV_clip_space_w_scaling" => 
Ok(Extension::NVClipSpaceWScaling)0
,
533
3
            "VK_EXT_direct_mode_display" => 
Ok(Extension::EXTDirectModeDisplay)0
,
534
3
            "VK_EXT_acquire_xlib_display" => 
Ok(Extension::EXTAcquireXlibDisplay)0
,
535
3
            "VK_EXT_display_surface_counter" => 
Ok(Extension::EXTDisplaySurfaceCounter)0
,
536
3
            "VK_EXT_display_control" => 
Ok(Extension::EXTDisplayControl)0
,
537
3
            "VK_GOOGLE_display_timing" => 
Ok(Extension::GOOGLEDisplayTiming)0
,
538
3
            "VK_NV_sample_mask_override_coverage" => 
Ok(Extension::NVSampleMaskOverrideCoverage)0
,
539
3
            "VK_NV_geometry_shader_passthrough" => 
Ok(Extension::NVGeometryShaderPassthrough)0
,
540
3
            "VK_NV_viewport_array2" => 
Ok(Extension::NVViewportArray2)0
,
541
3
            "VK_NVX_multiview_per_view_attributes" => 
Ok(Extension::NVXMultiviewPerViewAttributes)0
,
542
3
            "VK_NV_viewport_swizzle" => 
Ok(Extension::NVViewportSwizzle)0
,
543
3
            "VK_EXT_discard_rectangles" => 
Ok(Extension::EXTDiscardRectangles)0
,
544
3
            "VK_EXT_conservative_rasterization" => 
Ok(Extension::EXTConservativeRasterization)0
,
545
3
            "VK_EXT_depth_clip_enable" => 
Ok(Extension::EXTDepthClipEnable)0
,
546
3
            "VK_EXT_swapchain_colorspace" => 
Ok(Extension::EXTSwapchainColorspace)0
,
547
3
            "VK_EXT_hdr_metadata" => 
Ok(Extension::EXTHdrMetadata)0
,
548
3
            "VK_MVK_ios_surface" => 
Ok(Extension::MVKIosSurface)0
,
549
3
            "VK_MVK_macos_surface" => 
Ok(Extension::MVKMacosSurface)0
,
550
3
            "VK_EXT_external_memory_dma_buf" => 
Ok(Extension::EXTExternalMemoryDmaBuf)0
,
551
3
            "VK_EXT_queue_family_foreign" => 
Ok(Extension::EXTQueueFamilyForeign)0
,
552
3
            "VK_EXT_debug_utils" => 
Ok(Extension::EXTDebugUtils)0
,
553
3
            "VK_ANDROID_external_memory_android_hardware_buffer" => {
554
0
                Ok(Extension::ANDROIDExternalMemoryAndroidHardwareBuffer)
555
            }
556
3
            "VK_EXT_sampler_filter_minmax" => 
Ok(Extension::EXTSamplerFilterMinmax)0
,
557
3
            "VK_AMD_gpu_shader_int16" => 
Ok(Extension::AMDGpuShaderInt16)0
,
558
3
            "VK_AMD_mixed_attachment_samples" => 
Ok(Extension::AMDMixedAttachmentSamples)0
,
559
3
            "VK_AMD_shader_fragment_mask" => 
Ok(Extension::AMDShaderFragmentMask)0
,
560
3
            "VK_EXT_inline_uniform_block" => 
Ok(Extension::EXTInlineUniformBlock)0
,
561
3
            "VK_EXT_shader_stencil_export" => 
Ok(Extension::EXTShaderStencilExport)0
,
562
3
            "VK_EXT_sample_locations" => 
Ok(Extension::EXTSampleLocations)0
,
563
3
            "VK_EXT_blend_operation_advanced" => 
Ok(Extension::EXTBlendOperationAdvanced)0
,
564
3
            "VK_NV_fragment_coverage_to_color" => 
Ok(Extension::NVFragmentCoverageToColor)0
,
565
3
            "VK_NV_framebuffer_mixed_samples" => 
Ok(Extension::NVFramebufferMixedSamples)0
,
566
3
            "VK_NV_fill_rectangle" => 
Ok(Extension::NVFillRectangle)0
,
567
3
            "VK_NV_shader_sm_builtins" => 
Ok(Extension::NVShaderSmBuiltins)0
,
568
3
            "VK_EXT_post_depth_coverage" => 
Ok(Extension::EXTPostDepthCoverage)0
,
569
3
            "VK_EXT_image_drm_format_modifier" => 
Ok(Extension::EXTImageDrmFormatModifier)0
,
570
3
            "VK_EXT_validation_cache" => 
Ok(Extension::EXTValidationCache)0
,
571
3
            "VK_EXT_descriptor_indexing" => 
Ok(Extension::EXTDescriptorIndexing)0
,
572
3
            "VK_EXT_shader_viewport_index_layer" => 
Ok(Extension::EXTShaderViewportIndexLayer)0
,
573
3
            "VK_NV_shading_rate_image" => 
Ok(Extension::NVShadingRateImage)0
,
574
3
            "VK_NV_ray_tracing" => 
Ok(Extension::NVRayTracing)0
,
575
3
            "VK_NV_representative_fragment_test" => 
Ok(Extension::NVRepresentativeFragmentTest)0
,
576
3
            "VK_EXT_filter_cubic" => 
Ok(Extension::EXTFilterCubic)0
,
577
3
            "VK_QCOM_render_pass_shader_resolve" => 
Ok(Extension::QCOMRenderPassShaderResolve)0
,
578
3
            "VK_EXT_global_priority" => 
Ok(Extension::EXTGlobalPriority)0
,
579
3
            "VK_EXT_external_memory_host" => 
Ok(Extension::EXTExternalMemoryHost)0
,
580
3
            "VK_AMD_buffer_marker" => 
Ok(Extension::AMDBufferMarker)0
,
581
3
            "VK_AMD_pipeline_compiler_control" => 
Ok(Extension::AMDPipelineCompilerControl)0
,
582
3
            "VK_EXT_calibrated_timestamps" => 
Ok(Extension::EXTCalibratedTimestamps)0
,
583
3
            "VK_AMD_shader_core_properties" => 
Ok(Extension::AMDShaderCoreProperties)0
,
584
3
            "VK_AMD_memory_overallocation_behavior" => {
585
0
                Ok(Extension::AMDMemoryOverallocationBehavior)
586
            }
587
3
            "VK_EXT_vertex_attribute_divisor" => 
Ok(Extension::EXTVertexAttributeDivisor)0
,
588
3
            "VK_GGP_frame_token" => 
Ok(Extension::GGPFrameToken)0
,
589
3
            "VK_EXT_pipeline_creation_feedback" => 
Ok(Extension::EXTPipelineCreationFeedback)0
,
590
3
            "VK_NV_shader_subgroup_partitioned" => 
Ok(Extension::NVShaderSubgroupPartitioned)0
,
591
3
            "VK_NV_compute_shader_derivatives" => 
Ok(Extension::NVComputeShaderDerivatives)0
,
592
3
            "VK_NV_mesh_shader" => 
Ok(Extension::NVMeshShader)0
,
593
3
            "VK_NV_fragment_shader_barycentric" => 
Ok(Extension::NVFragmentShaderBarycentric)0
,
594
3
            "VK_NV_shader_image_footprint" => 
Ok(Extension::NVShaderImageFootprint)0
,
595
3
            "VK_NV_scissor_exclusive" => 
Ok(Extension::NVScissorExclusive)0
,
596
3
            "VK_NV_device_diagnostic_checkpoints" => 
Ok(Extension::NVDeviceDiagnosticCheckpoints)0
,
597
3
            "VK_INTEL_shader_integer_functions2" => 
Ok(Extension::INTELShaderIntegerFunctions2)0
,
598
3
            "VK_INTEL_performance_query" => 
Ok(Extension::INTELPerformanceQuery)0
,
599
3
            "VK_EXT_pci_bus_info" => 
Ok(Extension::EXTPciBusInfo)0
,
600
3
            "VK_AMD_display_native_hdr" => 
Ok(Extension::AMDDisplayNativeHdr)0
,
601
3
            "VK_FUCHSIA_imagepipe_surface" => 
Ok(Extension::FUCHSIAImagepipeSurface)0
,
602
3
            "VK_EXT_metal_surface" => 
Ok(Extension::EXTMetalSurface)0
,
603
3
            "VK_EXT_fragment_density_map" => 
Ok(Extension::EXTFragmentDensityMap)0
,
604
3
            "VK_EXT_scalar_block_layout" => 
Ok(Extension::EXTScalarBlockLayout)0
,
605
3
            "VK_GOOGLE_hlsl_functionality1" => 
Ok(Extension::GOOGLEHlslFunctionality1)0
,
606
3
            "VK_GOOGLE_decorate_string" => 
Ok(Extension::GOOGLEDecorateString)0
,
607
3
            "VK_EXT_subgroup_size_control" => 
Ok(Extension::EXTSubgroupSizeControl)0
,
608
3
            "VK_AMD_shader_core_properties2" => 
Ok(Extension::AMDShaderCoreProperties2)0
,
609
3
            "VK_AMD_device_coherent_memory" => 
Ok(Extension::AMDDeviceCoherentMemory)0
,
610
3
            "VK_EXT_shader_image_atomic_int64" => 
Ok(Extension::EXTShaderImageAtomicInt64)0
,
611
3
            "VK_EXT_memory_budget" => 
Ok(Extension::EXTMemoryBudget)0
,
612
3
            "VK_EXT_memory_priority" => 
Ok(Extension::EXTMemoryPriority)0
,
613
3
            "VK_NV_dedicated_allocation_image_aliasing" => {
614
0
                Ok(Extension::NVDedicatedAllocationImageAliasing)
615
            }
616
3
            "VK_EXT_buffer_device_address" => 
Ok(Extension::EXTBufferDeviceAddress)0
,
617
3
            "VK_EXT_tooling_info" => 
Ok(Extension::EXTToolingInfo)0
,
618
3
            "VK_EXT_separate_stencil_usage" => 
Ok(Extension::EXTSeparateStencilUsage)0
,
619
3
            "VK_EXT_validation_features" => 
Ok(Extension::EXTValidationFeatures)0
,
620
3
            "VK_NV_cooperative_matrix" => 
Ok(Extension::NVCooperativeMatrix)0
,
621
3
            "VK_NV_coverage_reduction_mode" => 
Ok(Extension::NVCoverageReductionMode)0
,
622
3
            "VK_EXT_fragment_shader_interlock" => 
Ok(Extension::EXTFragmentShaderInterlock)0
,
623
3
            "VK_EXT_ycbcr_image_arrays" => 
Ok(Extension::EXTYcbcrImageArrays)0
,
624
3
            "VK_EXT_provoking_vertex" => 
Ok(Extension::EXTProvokingVertex)0
,
625
3
            "VK_EXT_full_screen_exclusive" => 
Ok(Extension::EXTFullScreenExclusive)0
,
626
3
            "VK_EXT_headless_surface" => 
Ok(Extension::EXTHeadlessSurface)0
,
627
3
            "VK_EXT_line_rasterization" => 
Ok(Extension::EXTLineRasterization)0
,
628
3
            "VK_EXT_shader_atomic_float" => 
Ok(Extension::EXTShaderAtomicFloat)0
,
629
3
            "VK_EXT_host_query_reset" => 
Ok(Extension::EXTHostQueryReset)0
,
630
3
            "VK_EXT_index_type_uint8" => 
Ok(Extension::EXTIndexTypeUint8)0
,
631
3
            "VK_EXT_extended_dynamic_state" => 
Ok(Extension::EXTExtendedDynamicState)0
,
632
3
            "VK_EXT_shader_atomic_float2" => 
Ok(Extension::EXTShaderAtomicFloat2)0
,
633
3
            "VK_EXT_surface_maintenance1" => 
Ok(Extension::EXTSurfaceMaintenance1)0
,
634
3
            "VK_EXT_swapchain_maintenance1" => 
Ok(Extension::EXTSwapchainMaintenance1)0
,
635
3
            "VK_EXT_shader_demote_to_helper_invocation" => {
636
0
                Ok(Extension::EXTShaderDemoteToHelperInvocation)
637
            }
638
3
            "VK_NV_device_generated_commands" => 
Ok(Extension::NVDeviceGeneratedCommands)0
,
639
3
            "VK_NV_inherited_viewport_scissor" => 
Ok(Extension::NVInheritedViewportScissor)0
,
640
3
            "VK_EXT_texel_buffer_alignment" => 
Ok(Extension::EXTTexelBufferAlignment)0
,
641
3
            "VK_QCOM_render_pass_transform" => 
Ok(Extension::QCOMRenderPassTransform)0
,
642
3
            "VK_EXT_device_memory_report" => 
Ok(Extension::EXTDeviceMemoryReport)0
,
643
3
            "VK_EXT_acquire_drm_display" => 
Ok(Extension::EXTAcquireDrmDisplay)0
,
644
3
            "VK_EXT_robustness2" => 
Ok(Extension::EXTRobustness2)0
,
645
3
            "VK_EXT_custom_border_color" => 
Ok(Extension::EXTCustomBorderColor)0
,
646
3
            "VK_GOOGLE_user_type" => 
Ok(Extension::GOOGLEUserType)0
,
647
3
            "VK_NV_present_barrier" => 
Ok(Extension::NVPresentBarrier)0
,
648
3
            "VK_EXT_private_data" => 
Ok(Extension::EXTPrivateData)0
,
649
3
            "VK_EXT_pipeline_creation_cache_control" => {
650
0
                Ok(Extension::EXTPipelineCreationCacheControl)
651
            }
652
3
            "VK_NV_device_diagnostics_config" => 
Ok(Extension::NVDeviceDiagnosticsConfig)0
,
653
3
            "VK_QCOM_render_pass_store_ops" => 
Ok(Extension::QCOMRenderPassStoreOps)0
,
654
3
            "VK_NV_low_latency" => 
Ok(Extension::NVLowLatency)0
,
655
3
            "VK_EXT_metal_objects" => 
Ok(Extension::EXTMetalObjects)0
,
656
3
            "VK_EXT_descriptor_buffer" => 
Ok(Extension::EXTDescriptorBuffer)0
,
657
3
            "VK_EXT_graphics_pipeline_library" => 
Ok(Extension::EXTGraphicsPipelineLibrary)0
,
658
3
            "VK_AMD_shader_early_and_late_fragment_tests" => {
659
0
                Ok(Extension::AMDShaderEarlyAndLateFragmentTests)
660
            }
661
3
            "VK_NV_fragment_shading_rate_enums" => 
Ok(Extension::NVFragmentShadingRateEnums)0
,
662
3
            "VK_NV_ray_tracing_motion_blur" => 
Ok(Extension::NVRayTracingMotionBlur)0
,
663
3
            "VK_EXT_ycbcr_2plane_444_formats" => 
Ok(Extension::EXTYcbcr2plane444Formats)0
,
664
3
            "VK_EXT_fragment_density_map2" => 
Ok(Extension::EXTFragmentDensityMap2)0
,
665
3
            "VK_QCOM_rotated_copy_commands" => 
Ok(Extension::QCOMRotatedCopyCommands)0
,
666
3
            "VK_EXT_image_robustness" => 
Ok(Extension::EXTImageRobustness)0
,
667
3
            "VK_EXT_image_compression_control" => 
Ok(Extension::EXTImageCompressionControl)0
,
668
3
            "VK_EXT_attachment_feedback_loop_layout" => {
669
0
                Ok(Extension::EXTAttachmentFeedbackLoopLayout)
670
            }
671
3
            "VK_EXT_4444_formats" => 
Ok(Extension::EXT4444Formats)0
,
672
3
            "VK_EXT_device_fault" => 
Ok(Extension::EXTDeviceFault)0
,
673
3
            "VK_ARM_rasterization_order_attachment_access" => {
674
0
                Ok(Extension::ARMRasterizationOrderAttachmentAccess)
675
            }
676
3
            "VK_EXT_rgba10x6_formats" => 
Ok(Extension::EXTRgba10x6Formats)0
,
677
3
            "VK_NV_acquire_winrt_display" => 
Ok(Extension::NVAcquireWinrtDisplay)0
,
678
3
            "VK_EXT_directfb_surface" => 
Ok(Extension::EXTDirectfbSurface)0
,
679
3
            "VK_VALVE_mutable_descriptor_type" => 
Ok(Extension::VALVEMutableDescriptorType)0
,
680
3
            "VK_EXT_vertex_input_dynamic_state" => 
Ok(Extension::EXTVertexInputDynamicState)0
,
681
3
            "VK_EXT_physical_device_drm" => 
Ok(Extension::EXTPhysicalDeviceDrm)0
,
682
3
            "VK_EXT_device_address_binding_report" => 
Ok(Extension::EXTDeviceAddressBindingReport)0
,
683
3
            "VK_EXT_depth_clip_control" => 
Ok(Extension::EXTDepthClipControl)0
,
684
3
            "VK_EXT_primitive_topology_list_restart" => {
685
0
                Ok(Extension::EXTPrimitiveTopologyListRestart)
686
            }
687
3
            "VK_FUCHSIA_external_memory" => 
Ok(Extension::FUCHSIAExternalMemory)0
,
688
3
            "VK_FUCHSIA_external_semaphore" => 
Ok(Extension::FUCHSIAExternalSemaphore)0
,
689
3
            "VK_FUCHSIA_buffer_collection" => 
Ok(Extension::FUCHSIABufferCollection)0
,
690
3
            "VK_HUAWEI_subpass_shading" => 
Ok(Extension::HUAWEISubpassShading)0
,
691
3
            "VK_HUAWEI_invocation_mask" => 
Ok(Extension::HUAWEIInvocationMask)0
,
692
3
            "VK_NV_external_memory_rdma" => 
Ok(Extension::NVExternalMemoryRdma)0
,
693
3
            "VK_EXT_pipeline_properties" => 
Ok(Extension::EXTPipelineProperties)0
,
694
3
            "VK_EXT_multisampled_render_to_single_sampled" => {
695
0
                Ok(Extension::EXTMultisampledRenderToSingleSampled)
696
            }
697
3
            "VK_EXT_extended_dynamic_state2" => 
Ok(Extension::EXTExtendedDynamicState2)0
,
698
3
            "VK_QNX_screen_surface" => 
Ok(Extension::QNXScreenSurface)0
,
699
3
            "VK_EXT_color_write_enable" => 
Ok(Extension::EXTColorWriteEnable)0
,
700
3
            "VK_EXT_primitives_generated_query" => 
Ok(Extension::EXTPrimitivesGeneratedQuery)0
,
701
3
            "VK_EXT_global_priority_query" => 
Ok(Extension::EXTGlobalPriorityQuery)0
,
702
3
            "VK_EXT_image_view_min_lod" => 
Ok(Extension::EXTImageViewMinLod)0
,
703
3
            "VK_EXT_multi_draw" => 
Ok(Extension::EXTMultiDraw)0
,
704
3
            "VK_EXT_image_2d_view_of_3d" => 
Ok(Extension::EXTImage2dViewOf3d)0
,
705
3
            "VK_EXT_shader_tile_image" => 
Ok(Extension::EXTShaderTileImage)0
,
706
3
            "VK_EXT_opacity_micromap" => 
Ok(Extension::EXTOpacityMicromap)0
,
707
3
            "VK_NV_displacement_micromap" => 
Ok(Extension::NVDisplacementMicromap)0
,
708
3
            "VK_EXT_load_store_op_none" => 
Ok(Extension::EXTLoadStoreOpNone)0
,
709
3
            "VK_HUAWEI_cluster_culling_shader" => 
Ok(Extension::HUAWEIClusterCullingShader)0
,
710
3
            "VK_EXT_border_color_swizzle" => 
Ok(Extension::EXTBorderColorSwizzle)0
,
711
3
            "VK_EXT_pageable_device_local_memory" => 
Ok(Extension::EXTPageableDeviceLocalMemory)0
,
712
3
            "VK_ARM_shader_core_properties" => 
Ok(Extension::ARMShaderCoreProperties)0
,
713
3
            "VK_EXT_image_sliced_view_of_3d" => 
Ok(Extension::EXTImageSlicedViewOf3d)0
,
714
3
            "VK_VALVE_descriptor_set_host_mapping" => 
Ok(Extension::VALVEDescriptorSetHostMapping)0
,
715
3
            "VK_EXT_depth_clamp_zero_one" => 
Ok(Extension::EXTDepthClampZeroOne)0
,
716
3
            "VK_EXT_non_seamless_cube_map" => 
Ok(Extension::EXTNonSeamlessCubeMap)0
,
717
3
            "VK_QCOM_fragment_density_map_offset" => 
Ok(Extension::QCOMFragmentDensityMapOffset)0
,
718
3
            "VK_NV_copy_memory_indirect" => 
Ok(Extension::NVCopyMemoryIndirect)0
,
719
3
            "VK_NV_memory_decompression" => 
Ok(Extension::NVMemoryDecompression)0
,
720
3
            "VK_NV_linear_color_attachment" => 
Ok(Extension::NVLinearColorAttachment)0
,
721
3
            "VK_GOOGLE_surfaceless_query" => 
Ok(Extension::GOOGLESurfacelessQuery)0
,
722
3
            "VK_EXT_image_compression_control_swapchain" => {
723
0
                Ok(Extension::EXTImageCompressionControlSwapchain)
724
            }
725
3
            "VK_QCOM_image_processing" => 
Ok(Extension::QCOMImageProcessing)0
,
726
3
            "VK_EXT_extended_dynamic_state3" => 
Ok(Extension::EXTExtendedDynamicState3)0
,
727
3
            "VK_EXT_subpass_merge_feedback" => 
Ok(Extension::EXTSubpassMergeFeedback)0
,
728
3
            "VK_LUNARG_direct_driver_loading" => 
Ok(Extension::LUNARGDirectDriverLoading)0
,
729
3
            "VK_EXT_shader_module_identifier" => 
Ok(Extension::EXTShaderModuleIdentifier)0
,
730
3
            "VK_EXT_rasterization_order_attachment_access" => {
731
0
                Ok(Extension::EXTRasterizationOrderAttachmentAccess)
732
            }
733
3
            "VK_NV_optical_flow" => 
Ok(Extension::NVOpticalFlow)0
,
734
3
            "VK_EXT_legacy_dithering" => 
Ok(Extension::EXTLegacyDithering)0
,
735
3
            "VK_EXT_pipeline_protected_access" => 
Ok(Extension::EXTPipelineProtectedAccess)0
,
736
3
            "VK_EXT_shader_object" => 
Ok(Extension::EXTShaderObject)0
,
737
3
            "VK_QCOM_tile_properties" => 
Ok(Extension::QCOMTileProperties)0
,
738
3
            "VK_SEC_amigo_profiling" => 
Ok(Extension::SECAmigoProfiling)0
,
739
3
            "VK_QCOM_multiview_per_view_viewports" => 
Ok(Extension::QCOMMultiviewPerViewViewports)0
,
740
3
            "VK_NV_ray_tracing_invocation_reorder" => 
Ok(Extension::NVRayTracingInvocationReorder)0
,
741
3
            "VK_EXT_mutable_descriptor_type" => 
Ok(Extension::EXTMutableDescriptorType)0
,
742
3
            "VK_ARM_shader_core_builtins" => 
Ok(Extension::ARMShaderCoreBuiltins)0
,
743
3
            "VK_EXT_pipeline_library_group_handles" => {
744
0
                Ok(Extension::EXTPipelineLibraryGroupHandles)
745
            }
746
3
            "VK_EXT_dynamic_rendering_unused_attachments" => {
747
0
                Ok(Extension::EXTDynamicRenderingUnusedAttachments)
748
            }
749
3
            "VK_QCOM_multiview_per_view_render_areas" => {
750
0
                Ok(Extension::QCOMMultiviewPerViewRenderAreas)
751
            }
752
3
            "VK_EXT_attachment_feedback_loop_dynamic_state" => {
753
0
                Ok(Extension::EXTAttachmentFeedbackLoopDynamicState)
754
            }
755
3
            "VK_KHR_acceleration_structure" => 
Ok(Extension::KHRAccelerationStructure)0
,
756
3
            "VK_KHR_ray_tracing_pipeline" => 
Ok(Extension::KHRRayTracingPipeline)0
,
757
3
            "VK_KHR_ray_query" => 
Ok(Extension::KHRRayQuery)0
,
758
3
            "VK_EXT_mesh_shader" => 
Ok(Extension::EXTMeshShader)0
,
759
3
            _ => Err(TryFromExtensionError::UnknownExtension(value.to_owned())),
760
        }
761
44
    }
762
}
763
764
impl From<Extension> for &'static str {
765
11
    fn from(value: Extension) -> &'static str {
766
11
        match value {
767
0
            Extension::KHRSurface => "VK_KHR_surface",
768
4
            Extension::KHRSwapchain => "VK_KHR_swapchain",
769
0
            Extension::KHRDisplay => "VK_KHR_display",
770
0
            Extension::KHRDisplaySwapchain => "VK_KHR_display_swapchain",
771
0
            Extension::KHRXlibSurface => "VK_KHR_xlib_surface",
772
0
            Extension::KHRXcbSurface => "VK_KHR_xcb_surface",
773
0
            Extension::KHRWaylandSurface => "VK_KHR_wayland_surface",
774
0
            Extension::KHRAndroidSurface => "VK_KHR_android_surface",
775
0
            Extension::KHRWin32Surface => "VK_KHR_win32_surface",
776
0
            Extension::KHRSamplerMirrorClampToEdge => "VK_KHR_sampler_mirror_clamp_to_edge",
777
0
            Extension::KHRVideoQueue => "VK_KHR_video_queue",
778
0
            Extension::KHRVideoDecodeQueue => "VK_KHR_video_decode_queue",
779
0
            Extension::KHRVideoDecodeH264 => "VK_KHR_video_decode_h264",
780
0
            Extension::KHRDynamicRendering => "VK_KHR_dynamic_rendering",
781
0
            Extension::KHRMultiview => "VK_KHR_multiview",
782
0
            Extension::KHRGetPhysicalDeviceProperties2 => "VK_KHR_get_physical_device_properties2",
783
0
            Extension::KHRDeviceGroup => "VK_KHR_device_group",
784
0
            Extension::KHRShaderDrawParameters => "VK_KHR_shader_draw_parameters",
785
0
            Extension::KHRMaintenance1 => "VK_KHR_maintenance1",
786
0
            Extension::KHRDeviceGroupCreation => "VK_KHR_device_group_creation",
787
0
            Extension::KHRExternalMemoryCapabilities => "VK_KHR_external_memory_capabilities",
788
6
            Extension::KHRExternalMemory => "VK_KHR_external_memory",
789
0
            Extension::KHRExternalMemoryWin32 => "VK_KHR_external_memory_win32",
790
0
            Extension::KHRExternalMemoryFd => "VK_KHR_external_memory_fd",
791
0
            Extension::KHRWin32KeyedMutex => "VK_KHR_win32_keyed_mutex",
792
0
            Extension::KHRExternalSemaphoreCapabilities => "VK_KHR_external_semaphore_capabilities",
793
0
            Extension::KHRExternalSemaphore => "VK_KHR_external_semaphore",
794
0
            Extension::KHRExternalSemaphoreWin32 => "VK_KHR_external_semaphore_win32",
795
0
            Extension::KHRExternalSemaphoreFd => "VK_KHR_external_semaphore_fd",
796
0
            Extension::KHRPushDescriptor => "VK_KHR_push_descriptor",
797
0
            Extension::KHRShaderFloat16Int8 => "VK_KHR_shader_float16_int8",
798
0
            Extension::KHR16bitStorage => "VK_KHR_16bit_storage",
799
0
            Extension::KHRIncrementalPresent => "VK_KHR_incremental_present",
800
0
            Extension::KHRDescriptorUpdateTemplate => "VK_KHR_descriptor_update_template",
801
0
            Extension::KHRImagelessFramebuffer => "VK_KHR_imageless_framebuffer",
802
0
            Extension::KHRCreateRenderpass2 => "VK_KHR_create_renderpass2",
803
0
            Extension::KHRSharedPresentableImage => "VK_KHR_shared_presentable_image",
804
0
            Extension::KHRExternalFenceCapabilities => "VK_KHR_external_fence_capabilities",
805
0
            Extension::KHRExternalFence => "VK_KHR_external_fence",
806
0
            Extension::KHRExternalFenceWin32 => "VK_KHR_external_fence_win32",
807
0
            Extension::KHRExternalFenceFd => "VK_KHR_external_fence_fd",
808
0
            Extension::KHRPerformanceQuery => "VK_KHR_performance_query",
809
0
            Extension::KHRMaintenance2 => "VK_KHR_maintenance2",
810
0
            Extension::KHRGetSurfaceCapabilities2 => "VK_KHR_get_surface_capabilities2",
811
0
            Extension::KHRVariablePointers => "VK_KHR_variable_pointers",
812
0
            Extension::KHRGetDisplayProperties2 => "VK_KHR_get_display_properties2",
813
0
            Extension::KHRDedicatedAllocation => "VK_KHR_dedicated_allocation",
814
0
            Extension::KHRStorageBufferStorageClass => "VK_KHR_storage_buffer_storage_class",
815
0
            Extension::KHRRelaxedBlockLayout => "VK_KHR_relaxed_block_layout",
816
0
            Extension::KHRGetMemoryRequirements2 => "VK_KHR_get_memory_requirements2",
817
0
            Extension::KHRImageFormatList => "VK_KHR_image_format_list",
818
1
            Extension::KHRSamplerYcbcrConversion => "VK_KHR_sampler_ycbcr_conversion",
819
0
            Extension::KHRBindMemory2 => "VK_KHR_bind_memory2",
820
0
            Extension::KHRPortabilitySubset => "VK_KHR_portability_subset",
821
0
            Extension::KHRMaintenance3 => "VK_KHR_maintenance3",
822
0
            Extension::KHRDrawIndirectCount => "VK_KHR_draw_indirect_count",
823
0
            Extension::KHRShaderSubgroupExtendedTypes => "VK_KHR_shader_subgroup_extended_types",
824
0
            Extension::KHR8bitStorage => "VK_KHR_8bit_storage",
825
0
            Extension::KHRShaderAtomicInt64 => "VK_KHR_shader_atomic_int64",
826
0
            Extension::KHRShaderClock => "VK_KHR_shader_clock",
827
0
            Extension::KHRVideoDecodeH265 => "VK_KHR_video_decode_h265",
828
0
            Extension::KHRGlobalPriority => "VK_KHR_global_priority",
829
0
            Extension::KHRDriverProperties => "VK_KHR_driver_properties",
830
0
            Extension::KHRShaderFloatControls => "VK_KHR_shader_float_controls",
831
0
            Extension::KHRDepthStencilResolve => "VK_KHR_depth_stencil_resolve",
832
0
            Extension::KHRSwapchainMutableFormat => "VK_KHR_swapchain_mutable_format",
833
0
            Extension::KHRTimelineSemaphore => "VK_KHR_timeline_semaphore",
834
0
            Extension::KHRVulkanMemoryModel => "VK_KHR_vulkan_memory_model",
835
0
            Extension::KHRShaderTerminateInvocation => "VK_KHR_shader_terminate_invocation",
836
0
            Extension::KHRFragmentShadingRate => "VK_KHR_fragment_shading_rate",
837
0
            Extension::KHRSpirv14 => "VK_KHR_spirv_1_4",
838
0
            Extension::KHRSurfaceProtectedCapabilities => "VK_KHR_surface_protected_capabilities",
839
0
            Extension::KHRSeparateDepthStencilLayouts => "VK_KHR_separate_depth_stencil_layouts",
840
0
            Extension::KHRPresentWait => "VK_KHR_present_wait",
841
0
            Extension::KHRUniformBufferStandardLayout => "VK_KHR_uniform_buffer_standard_layout",
842
0
            Extension::KHRBufferDeviceAddress => "VK_KHR_buffer_device_address",
843
0
            Extension::KHRDeferredHostOperations => "VK_KHR_deferred_host_operations",
844
0
            Extension::KHRPipelineExecutableProperties => "VK_KHR_pipeline_executable_properties",
845
0
            Extension::KHRMapMemory2 => "VK_KHR_map_memory2",
846
0
            Extension::KHRShaderIntegerDotProduct => "VK_KHR_shader_integer_dot_product",
847
0
            Extension::KHRPipelineLibrary => "VK_KHR_pipeline_library",
848
0
            Extension::KHRShaderNonSemanticInfo => "VK_KHR_shader_non_semantic_info",
849
0
            Extension::KHRPresentId => "VK_KHR_present_id",
850
0
            Extension::KHRVideoEncodeQueue => "VK_KHR_video_encode_queue",
851
0
            Extension::KHRSynchronization2 => "VK_KHR_synchronization2",
852
0
            Extension::KHRFragmentShaderBarycentric => "VK_KHR_fragment_shader_barycentric",
853
            Extension::KHRShaderSubgroupUniformControlFlow => {
854
0
                "VK_KHR_shader_subgroup_uniform_control_flow"
855
            }
856
            Extension::KHRZeroInitializeWorkgroupMemory => {
857
0
                "VK_KHR_zero_initialize_workgroup_memory"
858
            }
859
            Extension::KHRWorkgroupMemoryExplicitLayout => {
860
0
                "VK_KHR_workgroup_memory_explicit_layout"
861
            }
862
0
            Extension::KHRCopyCommands2 => "VK_KHR_copy_commands2",
863
0
            Extension::KHRFormatFeatureFlags2 => "VK_KHR_format_feature_flags2",
864
0
            Extension::KHRRayTracingMaintenance1 => "VK_KHR_ray_tracing_maintenance1",
865
0
            Extension::KHRPortabilityEnumeration => "VK_KHR_portability_enumeration",
866
0
            Extension::KHRMaintenance4 => "VK_KHR_maintenance4",
867
0
            Extension::KHRRayTracingPositionFetch => "VK_KHR_ray_tracing_position_fetch",
868
0
            Extension::ANDROIDNativeBuffer => "VK_ANDROID_native_buffer",
869
0
            Extension::EXTDebugReport => "VK_EXT_debug_report",
870
0
            Extension::NVGlslShader => "VK_NV_glsl_shader",
871
0
            Extension::EXTDepthRangeUnrestricted => "VK_EXT_depth_range_unrestricted",
872
0
            Extension::IMGFilterCubic => "VK_IMG_filter_cubic",
873
0
            Extension::AMDRasterizationOrder => "VK_AMD_rasterization_order",
874
0
            Extension::AMDShaderTrinaryMinmax => "VK_AMD_shader_trinary_minmax",
875
            Extension::AMDShaderExplicitVertexParameter => {
876
0
                "VK_AMD_shader_explicit_vertex_parameter"
877
            }
878
0
            Extension::EXTDebugMarker => "VK_EXT_debug_marker",
879
0
            Extension::AMDGcnShader => "VK_AMD_gcn_shader",
880
0
            Extension::NVDedicatedAllocation => "VK_NV_dedicated_allocation",
881
0
            Extension::EXTTransformFeedback => "VK_EXT_transform_feedback",
882
0
            Extension::NVXBinaryImport => "VK_NVX_binary_import",
883
0
            Extension::NVXImageViewHandle => "VK_NVX_image_view_handle",
884
0
            Extension::AMDDrawIndirectCount => "VK_AMD_draw_indirect_count",
885
0
            Extension::AMDNegativeViewportHeight => "VK_AMD_negative_viewport_height",
886
0
            Extension::AMDGpuShaderHalfFloat => "VK_AMD_gpu_shader_half_float",
887
0
            Extension::AMDShaderBallot => "VK_AMD_shader_ballot",
888
0
            Extension::EXTVideoEncodeH264 => "VK_EXT_video_encode_h264",
889
0
            Extension::EXTVideoEncodeH265 => "VK_EXT_video_encode_h265",
890
0
            Extension::AMDTextureGatherBiasLod => "VK_AMD_texture_gather_bias_lod",
891
0
            Extension::AMDShaderInfo => "VK_AMD_shader_info",
892
0
            Extension::AMDShaderImageLoadStoreLod => "VK_AMD_shader_image_load_store_lod",
893
0
            Extension::GGPStreamDescriptorSurface => "VK_GGP_stream_descriptor_surface",
894
0
            Extension::NVCornerSampledImage => "VK_NV_corner_sampled_image",
895
0
            Extension::IMGFormatPvrtc => "VK_IMG_format_pvrtc",
896
0
            Extension::NVExternalMemoryCapabilities => "VK_NV_external_memory_capabilities",
897
0
            Extension::NVExternalMemory => "VK_NV_external_memory",
898
0
            Extension::NVExternalMemoryWin32 => "VK_NV_external_memory_win32",
899
0
            Extension::NVWin32KeyedMutex => "VK_NV_win32_keyed_mutex",
900
0
            Extension::EXTValidationFlags => "VK_EXT_validation_flags",
901
0
            Extension::NNViSurface => "VK_NN_vi_surface",
902
0
            Extension::EXTShaderSubgroupBallot => "VK_EXT_shader_subgroup_ballot",
903
0
            Extension::EXTShaderSubgroupVote => "VK_EXT_shader_subgroup_vote",
904
0
            Extension::EXTTextureCompressionAstcHdr => "VK_EXT_texture_compression_astc_hdr",
905
0
            Extension::EXTAstcDecodeMode => "VK_EXT_astc_decode_mode",
906
0
            Extension::EXTPipelineRobustness => "VK_EXT_pipeline_robustness",
907
0
            Extension::EXTConditionalRendering => "VK_EXT_conditional_rendering",
908
0
            Extension::NVClipSpaceWScaling => "VK_NV_clip_space_w_scaling",
909
0
            Extension::EXTDirectModeDisplay => "VK_EXT_direct_mode_display",
910
0
            Extension::EXTAcquireXlibDisplay => "VK_EXT_acquire_xlib_display",
911
0
            Extension::EXTDisplaySurfaceCounter => "VK_EXT_display_surface_counter",
912
0
            Extension::EXTDisplayControl => "VK_EXT_display_control",
913
0
            Extension::GOOGLEDisplayTiming => "VK_GOOGLE_display_timing",
914
0
            Extension::NVSampleMaskOverrideCoverage => "VK_NV_sample_mask_override_coverage",
915
0
            Extension::NVGeometryShaderPassthrough => "VK_NV_geometry_shader_passthrough",
916
0
            Extension::NVViewportArray2 => "VK_NV_viewport_array2",
917
0
            Extension::NVXMultiviewPerViewAttributes => "VK_NVX_multiview_per_view_attributes",
918
0
            Extension::NVViewportSwizzle => "VK_NV_viewport_swizzle",
919
0
            Extension::EXTDiscardRectangles => "VK_EXT_discard_rectangles",
920
0
            Extension::EXTConservativeRasterization => "VK_EXT_conservative_rasterization",
921
0
            Extension::EXTDepthClipEnable => "VK_EXT_depth_clip_enable",
922
0
            Extension::EXTSwapchainColorspace => "VK_EXT_swapchain_colorspace",
923
0
            Extension::EXTHdrMetadata => "VK_EXT_hdr_metadata",
924
0
            Extension::MVKIosSurface => "VK_MVK_ios_surface",
925
0
            Extension::MVKMacosSurface => "VK_MVK_macos_surface",
926
0
            Extension::EXTExternalMemoryDmaBuf => "VK_EXT_external_memory_dma_buf",
927
0
            Extension::EXTQueueFamilyForeign => "VK_EXT_queue_family_foreign",
928
0
            Extension::EXTDebugUtils => "VK_EXT_debug_utils",
929
            Extension::ANDROIDExternalMemoryAndroidHardwareBuffer => {
930
0
                "VK_ANDROID_external_memory_android_hardware_buffer"
931
            }
932
0
            Extension::EXTSamplerFilterMinmax => "VK_EXT_sampler_filter_minmax",
933
0
            Extension::AMDGpuShaderInt16 => "VK_AMD_gpu_shader_int16",
934
0
            Extension::AMDMixedAttachmentSamples => "VK_AMD_mixed_attachment_samples",
935
0
            Extension::AMDShaderFragmentMask => "VK_AMD_shader_fragment_mask",
936
0
            Extension::EXTInlineUniformBlock => "VK_EXT_inline_uniform_block",
937
0
            Extension::EXTShaderStencilExport => "VK_EXT_shader_stencil_export",
938
0
            Extension::EXTSampleLocations => "VK_EXT_sample_locations",
939
0
            Extension::EXTBlendOperationAdvanced => "VK_EXT_blend_operation_advanced",
940
0
            Extension::NVFragmentCoverageToColor => "VK_NV_fragment_coverage_to_color",
941
0
            Extension::NVFramebufferMixedSamples => "VK_NV_framebuffer_mixed_samples",
942
0
            Extension::NVFillRectangle => "VK_NV_fill_rectangle",
943
0
            Extension::NVShaderSmBuiltins => "VK_NV_shader_sm_builtins",
944
0
            Extension::EXTPostDepthCoverage => "VK_EXT_post_depth_coverage",
945
0
            Extension::EXTImageDrmFormatModifier => "VK_EXT_image_drm_format_modifier",
946
0
            Extension::EXTValidationCache => "VK_EXT_validation_cache",
947
0
            Extension::EXTDescriptorIndexing => "VK_EXT_descriptor_indexing",
948
0
            Extension::EXTShaderViewportIndexLayer => "VK_EXT_shader_viewport_index_layer",
949
0
            Extension::NVShadingRateImage => "VK_NV_shading_rate_image",
950
0
            Extension::NVRayTracing => "VK_NV_ray_tracing",
951
0
            Extension::NVRepresentativeFragmentTest => "VK_NV_representative_fragment_test",
952
0
            Extension::EXTFilterCubic => "VK_EXT_filter_cubic",
953
0
            Extension::QCOMRenderPassShaderResolve => "VK_QCOM_render_pass_shader_resolve",
954
0
            Extension::EXTGlobalPriority => "VK_EXT_global_priority",
955
0
            Extension::EXTExternalMemoryHost => "VK_EXT_external_memory_host",
956
0
            Extension::AMDBufferMarker => "VK_AMD_buffer_marker",
957
0
            Extension::AMDPipelineCompilerControl => "VK_AMD_pipeline_compiler_control",
958
0
            Extension::EXTCalibratedTimestamps => "VK_EXT_calibrated_timestamps",
959
0
            Extension::AMDShaderCoreProperties => "VK_AMD_shader_core_properties",
960
0
            Extension::AMDMemoryOverallocationBehavior => "VK_AMD_memory_overallocation_behavior",
961
0
            Extension::EXTVertexAttributeDivisor => "VK_EXT_vertex_attribute_divisor",
962
0
            Extension::GGPFrameToken => "VK_GGP_frame_token",
963
0
            Extension::EXTPipelineCreationFeedback => "VK_EXT_pipeline_creation_feedback",
964
0
            Extension::NVShaderSubgroupPartitioned => "VK_NV_shader_subgroup_partitioned",
965
0
            Extension::NVComputeShaderDerivatives => "VK_NV_compute_shader_derivatives",
966
0
            Extension::NVMeshShader => "VK_NV_mesh_shader",
967
0
            Extension::NVFragmentShaderBarycentric => "VK_NV_fragment_shader_barycentric",
968
0
            Extension::NVShaderImageFootprint => "VK_NV_shader_image_footprint",
969
0
            Extension::NVScissorExclusive => "VK_NV_scissor_exclusive",
970
0
            Extension::NVDeviceDiagnosticCheckpoints => "VK_NV_device_diagnostic_checkpoints",
971
0
            Extension::INTELShaderIntegerFunctions2 => "VK_INTEL_shader_integer_functions2",
972
0
            Extension::INTELPerformanceQuery => "VK_INTEL_performance_query",
973
0
            Extension::EXTPciBusInfo => "VK_EXT_pci_bus_info",
974
0
            Extension::AMDDisplayNativeHdr => "VK_AMD_display_native_hdr",
975
0
            Extension::FUCHSIAImagepipeSurface => "VK_FUCHSIA_imagepipe_surface",
976
0
            Extension::EXTMetalSurface => "VK_EXT_metal_surface",
977
0
            Extension::EXTFragmentDensityMap => "VK_EXT_fragment_density_map",
978
0
            Extension::EXTScalarBlockLayout => "VK_EXT_scalar_block_layout",
979
0
            Extension::GOOGLEHlslFunctionality1 => "VK_GOOGLE_hlsl_functionality1",
980
0
            Extension::GOOGLEDecorateString => "VK_GOOGLE_decorate_string",
981
0
            Extension::EXTSubgroupSizeControl => "VK_EXT_subgroup_size_control",
982
0
            Extension::AMDShaderCoreProperties2 => "VK_AMD_shader_core_properties2",
983
0
            Extension::AMDDeviceCoherentMemory => "VK_AMD_device_coherent_memory",
984
0
            Extension::EXTShaderImageAtomicInt64 => "VK_EXT_shader_image_atomic_int64",
985
0
            Extension::EXTMemoryBudget => "VK_EXT_memory_budget",
986
0
            Extension::EXTMemoryPriority => "VK_EXT_memory_priority",
987
            Extension::NVDedicatedAllocationImageAliasing => {
988
0
                "VK_NV_dedicated_allocation_image_aliasing"
989
            }
990
0
            Extension::EXTBufferDeviceAddress => "VK_EXT_buffer_device_address",
991
0
            Extension::EXTToolingInfo => "VK_EXT_tooling_info",
992
0
            Extension::EXTSeparateStencilUsage => "VK_EXT_separate_stencil_usage",
993
0
            Extension::EXTValidationFeatures => "VK_EXT_validation_features",
994
0
            Extension::NVCooperativeMatrix => "VK_NV_cooperative_matrix",
995
0
            Extension::NVCoverageReductionMode => "VK_NV_coverage_reduction_mode",
996
0
            Extension::EXTFragmentShaderInterlock => "VK_EXT_fragment_shader_interlock",
997
0
            Extension::EXTYcbcrImageArrays => "VK_EXT_ycbcr_image_arrays",
998
0
            Extension::EXTProvokingVertex => "VK_EXT_provoking_vertex",
999
0
            Extension::EXTFullScreenExclusive => "VK_EXT_full_screen_exclusive",
1000
0
            Extension::EXTHeadlessSurface => "VK_EXT_headless_surface",
1001
0
            Extension::EXTLineRasterization => "VK_EXT_line_rasterization",
1002
0
            Extension::EXTShaderAtomicFloat => "VK_EXT_shader_atomic_float",
1003
0
            Extension::EXTHostQueryReset => "VK_EXT_host_query_reset",
1004
0
            Extension::EXTIndexTypeUint8 => "VK_EXT_index_type_uint8",
1005
0
            Extension::EXTExtendedDynamicState => "VK_EXT_extended_dynamic_state",
1006
0
            Extension::EXTShaderAtomicFloat2 => "VK_EXT_shader_atomic_float2",
1007
0
            Extension::EXTSurfaceMaintenance1 => "VK_EXT_surface_maintenance1",
1008
0
            Extension::EXTSwapchainMaintenance1 => "VK_EXT_swapchain_maintenance1",
1009
            Extension::EXTShaderDemoteToHelperInvocation => {
1010
0
                "VK_EXT_shader_demote_to_helper_invocation"
1011
            }
1012
0
            Extension::NVDeviceGeneratedCommands => "VK_NV_device_generated_commands",
1013
0
            Extension::NVInheritedViewportScissor => "VK_NV_inherited_viewport_scissor",
1014
0
            Extension::EXTTexelBufferAlignment => "VK_EXT_texel_buffer_alignment",
1015
0
            Extension::QCOMRenderPassTransform => "VK_QCOM_render_pass_transform",
1016
0
            Extension::EXTDeviceMemoryReport => "VK_EXT_device_memory_report",
1017
0
            Extension::EXTAcquireDrmDisplay => "VK_EXT_acquire_drm_display",
1018
0
            Extension::EXTRobustness2 => "VK_EXT_robustness2",
1019
0
            Extension::EXTCustomBorderColor => "VK_EXT_custom_border_color",
1020
0
            Extension::GOOGLEUserType => "VK_GOOGLE_user_type",
1021
0
            Extension::NVPresentBarrier => "VK_NV_present_barrier",
1022
0
            Extension::EXTPrivateData => "VK_EXT_private_data",
1023
0
            Extension::EXTPipelineCreationCacheControl => "VK_EXT_pipeline_creation_cache_control",
1024
0
            Extension::NVDeviceDiagnosticsConfig => "VK_NV_device_diagnostics_config",
1025
0
            Extension::QCOMRenderPassStoreOps => "VK_QCOM_render_pass_store_ops",
1026
0
            Extension::NVLowLatency => "VK_NV_low_latency",
1027
0
            Extension::EXTMetalObjects => "VK_EXT_metal_objects",
1028
0
            Extension::EXTDescriptorBuffer => "VK_EXT_descriptor_buffer",
1029
0
            Extension::EXTGraphicsPipelineLibrary => "VK_EXT_graphics_pipeline_library",
1030
            Extension::AMDShaderEarlyAndLateFragmentTests => {
1031
0
                "VK_AMD_shader_early_and_late_fragment_tests"
1032
            }
1033
0
            Extension::NVFragmentShadingRateEnums => "VK_NV_fragment_shading_rate_enums",
1034
0
            Extension::NVRayTracingMotionBlur => "VK_NV_ray_tracing_motion_blur",
1035
0
            Extension::EXTYcbcr2plane444Formats => "VK_EXT_ycbcr_2plane_444_formats",
1036
0
            Extension::EXTFragmentDensityMap2 => "VK_EXT_fragment_density_map2",
1037
0
            Extension::QCOMRotatedCopyCommands => "VK_QCOM_rotated_copy_commands",
1038
0
            Extension::EXTImageRobustness => "VK_EXT_image_robustness",
1039
0
            Extension::EXTImageCompressionControl => "VK_EXT_image_compression_control",
1040
0
            Extension::EXTAttachmentFeedbackLoopLayout => "VK_EXT_attachment_feedback_loop_layout",
1041
0
            Extension::EXT4444Formats => "VK_EXT_4444_formats",
1042
0
            Extension::EXTDeviceFault => "VK_EXT_device_fault",
1043
            Extension::ARMRasterizationOrderAttachmentAccess => {
1044
0
                "VK_ARM_rasterization_order_attachment_access"
1045
            }
1046
0
            Extension::EXTRgba10x6Formats => "VK_EXT_rgba10x6_formats",
1047
0
            Extension::NVAcquireWinrtDisplay => "VK_NV_acquire_winrt_display",
1048
0
            Extension::EXTDirectfbSurface => "VK_EXT_directfb_surface",
1049
0
            Extension::VALVEMutableDescriptorType => "VK_VALVE_mutable_descriptor_type",
1050
0
            Extension::EXTVertexInputDynamicState => "VK_EXT_vertex_input_dynamic_state",
1051
0
            Extension::EXTPhysicalDeviceDrm => "VK_EXT_physical_device_drm",
1052
0
            Extension::EXTDeviceAddressBindingReport => "VK_EXT_device_address_binding_report",
1053
0
            Extension::EXTDepthClipControl => "VK_EXT_depth_clip_control",
1054
0
            Extension::EXTPrimitiveTopologyListRestart => "VK_EXT_primitive_topology_list_restart",
1055
0
            Extension::FUCHSIAExternalMemory => "VK_FUCHSIA_external_memory",
1056
0
            Extension::FUCHSIAExternalSemaphore => "VK_FUCHSIA_external_semaphore",
1057
0
            Extension::FUCHSIABufferCollection => "VK_FUCHSIA_buffer_collection",
1058
0
            Extension::HUAWEISubpassShading => "VK_HUAWEI_subpass_shading",
1059
0
            Extension::HUAWEIInvocationMask => "VK_HUAWEI_invocation_mask",
1060
0
            Extension::NVExternalMemoryRdma => "VK_NV_external_memory_rdma",
1061
0
            Extension::EXTPipelineProperties => "VK_EXT_pipeline_properties",
1062
            Extension::EXTMultisampledRenderToSingleSampled => {
1063
0
                "VK_EXT_multisampled_render_to_single_sampled"
1064
            }
1065
0
            Extension::EXTExtendedDynamicState2 => "VK_EXT_extended_dynamic_state2",
1066
0
            Extension::QNXScreenSurface => "VK_QNX_screen_surface",
1067
0
            Extension::EXTColorWriteEnable => "VK_EXT_color_write_enable",
1068
0
            Extension::EXTPrimitivesGeneratedQuery => "VK_EXT_primitives_generated_query",
1069
0
            Extension::EXTGlobalPriorityQuery => "VK_EXT_global_priority_query",
1070
0
            Extension::EXTImageViewMinLod => "VK_EXT_image_view_min_lod",
1071
0
            Extension::EXTMultiDraw => "VK_EXT_multi_draw",
1072
0
            Extension::EXTImage2dViewOf3d => "VK_EXT_image_2d_view_of_3d",
1073
0
            Extension::EXTShaderTileImage => "VK_EXT_shader_tile_image",
1074
0
            Extension::EXTOpacityMicromap => "VK_EXT_opacity_micromap",
1075
0
            Extension::NVDisplacementMicromap => "VK_NV_displacement_micromap",
1076
0
            Extension::EXTLoadStoreOpNone => "VK_EXT_load_store_op_none",
1077
0
            Extension::HUAWEIClusterCullingShader => "VK_HUAWEI_cluster_culling_shader",
1078
0
            Extension::EXTBorderColorSwizzle => "VK_EXT_border_color_swizzle",
1079
0
            Extension::EXTPageableDeviceLocalMemory => "VK_EXT_pageable_device_local_memory",
1080
0
            Extension::ARMShaderCoreProperties => "VK_ARM_shader_core_properties",
1081
0
            Extension::EXTImageSlicedViewOf3d => "VK_EXT_image_sliced_view_of_3d",
1082
0
            Extension::VALVEDescriptorSetHostMapping => "VK_VALVE_descriptor_set_host_mapping",
1083
0
            Extension::EXTDepthClampZeroOne => "VK_EXT_depth_clamp_zero_one",
1084
0
            Extension::EXTNonSeamlessCubeMap => "VK_EXT_non_seamless_cube_map",
1085
0
            Extension::QCOMFragmentDensityMapOffset => "VK_QCOM_fragment_density_map_offset",
1086
0
            Extension::NVCopyMemoryIndirect => "VK_NV_copy_memory_indirect",
1087
0
            Extension::NVMemoryDecompression => "VK_NV_memory_decompression",
1088
0
            Extension::NVLinearColorAttachment => "VK_NV_linear_color_attachment",
1089
0
            Extension::GOOGLESurfacelessQuery => "VK_GOOGLE_surfaceless_query",
1090
            Extension::EXTImageCompressionControlSwapchain => {
1091
0
                "VK_EXT_image_compression_control_swapchain"
1092
            }
1093
0
            Extension::QCOMImageProcessing => "VK_QCOM_image_processing",
1094
0
            Extension::EXTExtendedDynamicState3 => "VK_EXT_extended_dynamic_state3",
1095
0
            Extension::EXTSubpassMergeFeedback => "VK_EXT_subpass_merge_feedback",
1096
0
            Extension::LUNARGDirectDriverLoading => "VK_LUNARG_direct_driver_loading",
1097
0
            Extension::EXTShaderModuleIdentifier => "VK_EXT_shader_module_identifier",
1098
            Extension::EXTRasterizationOrderAttachmentAccess => {
1099
0
                "VK_EXT_rasterization_order_attachment_access"
1100
            }
1101
0
            Extension::NVOpticalFlow => "VK_NV_optical_flow",
1102
0
            Extension::EXTLegacyDithering => "VK_EXT_legacy_dithering",
1103
0
            Extension::EXTPipelineProtectedAccess => "VK_EXT_pipeline_protected_access",
1104
0
            Extension::EXTShaderObject => "VK_EXT_shader_object",
1105
0
            Extension::QCOMTileProperties => "VK_QCOM_tile_properties",
1106
0
            Extension::SECAmigoProfiling => "VK_SEC_amigo_profiling",
1107
0
            Extension::QCOMMultiviewPerViewViewports => "VK_QCOM_multiview_per_view_viewports",
1108
0
            Extension::NVRayTracingInvocationReorder => "VK_NV_ray_tracing_invocation_reorder",
1109
0
            Extension::EXTMutableDescriptorType => "VK_EXT_mutable_descriptor_type",
1110
0
            Extension::ARMShaderCoreBuiltins => "VK_ARM_shader_core_builtins",
1111
0
            Extension::EXTPipelineLibraryGroupHandles => "VK_EXT_pipeline_library_group_handles",
1112
            Extension::EXTDynamicRenderingUnusedAttachments => {
1113
0
                "VK_EXT_dynamic_rendering_unused_attachments"
1114
            }
1115
0
            Extension::QCOMMultiviewPerViewRenderAreas => "VK_QCOM_multiview_per_view_render_areas",
1116
            Extension::EXTAttachmentFeedbackLoopDynamicState => {
1117
0
                "VK_EXT_attachment_feedback_loop_dynamic_state"
1118
            }
1119
0
            Extension::KHRAccelerationStructure => "VK_KHR_acceleration_structure",
1120
0
            Extension::KHRRayTracingPipeline => "VK_KHR_ray_tracing_pipeline",
1121
0
            Extension::KHRRayQuery => "VK_KHR_ray_query",
1122
0
            Extension::EXTMeshShader => "VK_EXT_mesh_shader",
1123
        }
1124
11
    }
1125
}
1126
1127
pub(crate) struct DeviceDispatchTable {
1128
    pub core: Arc<ash::Device>,
1129
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1130
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1131
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1132
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1133
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1134
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1135
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1136
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1137
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1138
    khr_display_swapchain: Arc<ash::vk::KhrDisplaySwapchainFn>,
1139
    khr_video_decode_queue: Arc<ash::vk::KhrVideoDecodeQueueFn>,
1140
    khr_external_memory_win32: Arc<ash::vk::KhrExternalMemoryWin32Fn>,
1141
    khr_external_memory_fd: Arc<ash::vk::KhrExternalMemoryFdFn>,
1142
    khr_external_semaphore_win32: Arc<ash::vk::KhrExternalSemaphoreWin32Fn>,
1143
    khr_external_semaphore_fd: Arc<ash::vk::KhrExternalSemaphoreFdFn>,
1144
    khr_push_descriptor: Arc<ash::vk::KhrPushDescriptorFn>,
1145
    khr_shared_presentable_image: Arc<ash::vk::KhrSharedPresentableImageFn>,
1146
    khr_external_fence_win32: Arc<ash::vk::KhrExternalFenceWin32Fn>,
1147
    khr_external_fence_fd: Arc<ash::vk::KhrExternalFenceFdFn>,
1148
    khr_present_wait: Arc<ash::vk::KhrPresentWaitFn>,
1149
    khr_deferred_host_operations: Arc<ash::vk::KhrDeferredHostOperationsFn>,
1150
    khr_pipeline_executable_properties: Arc<ash::vk::KhrPipelineExecutablePropertiesFn>,
1151
    khr_video_encode_queue: Arc<ash::vk::KhrVideoEncodeQueueFn>,
1152
    khr_synchronization2: Arc<ash::vk::KhrSynchronization2Fn>,
1153
    khr_ray_tracing_maintenance1: Arc<ash::vk::KhrRayTracingMaintenance1Fn>,
1154
    android_native_buffer: Arc<ash::vk::AndroidNativeBufferFn>,
1155
    ext_debug_marker: Arc<ash::vk::ExtDebugMarkerFn>,
1156
    ext_transform_feedback: Arc<ash::vk::ExtTransformFeedbackFn>,
1157
    nvx_binary_import: Arc<ash::vk::NvxBinaryImportFn>,
1158
    nvx_image_view_handle: Arc<ash::vk::NvxImageViewHandleFn>,
1159
    amd_shader_info: Arc<ash::vk::AmdShaderInfoFn>,
1160
    nv_external_memory_win32: Arc<ash::vk::NvExternalMemoryWin32Fn>,
1161
    ext_conditional_rendering: Arc<ash::vk::ExtConditionalRenderingFn>,
1162
    nv_clip_space_w_scaling: Arc<ash::vk::NvClipSpaceWScalingFn>,
1163
    ext_display_control: Arc<ash::vk::ExtDisplayControlFn>,
1164
    google_display_timing: Arc<ash::vk::GoogleDisplayTimingFn>,
1165
    ext_discard_rectangles: Arc<ash::vk::ExtDiscardRectanglesFn>,
1166
    ext_hdr_metadata: Arc<ash::vk::ExtHdrMetadataFn>,
1167
    android_external_memory_android_hardware_buffer:
1168
        Arc<ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn>,
1169
    ext_image_drm_format_modifier: Arc<ash::vk::ExtImageDrmFormatModifierFn>,
1170
    ext_validation_cache: Arc<ash::vk::ExtValidationCacheFn>,
1171
    nv_shading_rate_image: Arc<ash::vk::NvShadingRateImageFn>,
1172
    nv_ray_tracing: Arc<ash::vk::NvRayTracingFn>,
1173
    khr_ray_tracing_pipeline: Arc<ash::vk::KhrRayTracingPipelineFn>,
1174
    ext_external_memory_host: Arc<ash::vk::ExtExternalMemoryHostFn>,
1175
    amd_buffer_marker: Arc<ash::vk::AmdBufferMarkerFn>,
1176
    nv_mesh_shader: Arc<ash::vk::NvMeshShaderFn>,
1177
    nv_scissor_exclusive: Arc<ash::vk::NvScissorExclusiveFn>,
1178
    nv_device_diagnostic_checkpoints: Arc<ash::vk::NvDeviceDiagnosticCheckpointsFn>,
1179
    intel_performance_query: Arc<ash::vk::IntelPerformanceQueryFn>,
1180
    amd_display_native_hdr: Arc<ash::vk::AmdDisplayNativeHdrFn>,
1181
    ext_line_rasterization: Arc<ash::vk::ExtLineRasterizationFn>,
1182
    ext_swapchain_maintenance1: Arc<ash::vk::ExtSwapchainMaintenance1Fn>,
1183
    nv_device_generated_commands: Arc<ash::vk::NvDeviceGeneratedCommandsFn>,
1184
    ext_metal_objects: Arc<ash::vk::ExtMetalObjectsFn>,
1185
    ext_descriptor_buffer: Arc<ash::vk::ExtDescriptorBufferFn>,
1186
    nv_fragment_shading_rate_enums: Arc<ash::vk::NvFragmentShadingRateEnumsFn>,
1187
    ext_image_compression_control: Arc<ash::vk::ExtImageCompressionControlFn>,
1188
    ext_vertex_input_dynamic_state: Arc<ash::vk::ExtVertexInputDynamicStateFn>,
1189
    fuchsia_external_memory: Arc<ash::vk::FuchsiaExternalMemoryFn>,
1190
    fuchsia_external_semaphore: Arc<ash::vk::FuchsiaExternalSemaphoreFn>,
1191
    fuchsia_buffer_collection: Arc<ash::vk::FuchsiaBufferCollectionFn>,
1192
    huawei_subpass_shading: Arc<ash::vk::HuaweiSubpassShadingFn>,
1193
    huawei_invocation_mask: Arc<ash::vk::HuaweiInvocationMaskFn>,
1194
    nv_external_memory_rdma: Arc<ash::vk::NvExternalMemoryRdmaFn>,
1195
    ext_pipeline_properties: Arc<ash::vk::ExtPipelinePropertiesFn>,
1196
    ext_extended_dynamic_state2: Arc<ash::vk::ExtExtendedDynamicState2Fn>,
1197
    ext_color_write_enable: Arc<ash::vk::ExtColorWriteEnableFn>,
1198
    ext_multi_draw: Arc<ash::vk::ExtMultiDrawFn>,
1199
    ext_opacity_micromap: Arc<ash::vk::ExtOpacityMicromapFn>,
1200
    ext_pageable_device_local_memory: Arc<ash::vk::ExtPageableDeviceLocalMemoryFn>,
1201
    valve_descriptor_set_host_mapping: Arc<ash::vk::ValveDescriptorSetHostMappingFn>,
1202
    nv_copy_memory_indirect: Arc<ash::vk::NvCopyMemoryIndirectFn>,
1203
    nv_memory_decompression: Arc<ash::vk::NvMemoryDecompressionFn>,
1204
    ext_extended_dynamic_state3: Arc<ash::vk::ExtExtendedDynamicState3Fn>,
1205
    ext_shader_module_identifier: Arc<ash::vk::ExtShaderModuleIdentifierFn>,
1206
    qcom_tile_properties: Arc<ash::vk::QcomTilePropertiesFn>,
1207
    khr_acceleration_structure: Arc<ash::vk::KhrAccelerationStructureFn>,
1208
    ext_mesh_shader: Arc<ash::vk::ExtMeshShaderFn>,
1209
}
1210
impl DeviceDispatchTable {
1211
23
    pub(crate) fn load(
1212
23
        get_device_proc_addr: vk::PFN_vkGetDeviceProcAddr,
1213
23
        device: Arc<ash::Device>,
1214
23
    ) -> Self {
1215
23
        let proc_addr_loader = get_device_proc_addr_loader(get_device_proc_addr, &device);
1216
23
        Self {
1217
23
            core: Arc::clone(&device),
1218
23
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1219
23
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1220
23
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1221
23
                &proc_addr_loader,
1222
23
            )),
1223
23
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1224
23
                &proc_addr_loader,
1225
23
            )),
1226
23
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1227
23
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1228
23
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1229
23
                &proc_addr_loader,
1230
23
            )),
1231
23
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1232
23
                &proc_addr_loader,
1233
23
            )),
1234
23
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1235
23
            khr_display_swapchain: Arc::new(ash::vk::KhrDisplaySwapchainFn::load(
1236
23
                &proc_addr_loader,
1237
23
            )),
1238
23
            khr_video_decode_queue: Arc::new(ash::vk::KhrVideoDecodeQueueFn::load(
1239
23
                &proc_addr_loader,
1240
23
            )),
1241
23
            khr_external_memory_win32: Arc::new(ash::vk::KhrExternalMemoryWin32Fn::load(
1242
23
                &proc_addr_loader,
1243
23
            )),
1244
23
            khr_external_memory_fd: Arc::new(ash::vk::KhrExternalMemoryFdFn::load(
1245
23
                &proc_addr_loader,
1246
23
            )),
1247
23
            khr_external_semaphore_win32: Arc::new(ash::vk::KhrExternalSemaphoreWin32Fn::load(
1248
23
                &proc_addr_loader,
1249
23
            )),
1250
23
            khr_external_semaphore_fd: Arc::new(ash::vk::KhrExternalSemaphoreFdFn::load(
1251
23
                &proc_addr_loader,
1252
23
            )),
1253
23
            khr_push_descriptor: Arc::new(ash::vk::KhrPushDescriptorFn::load(&proc_addr_loader)),
1254
23
            khr_shared_presentable_image: Arc::new(ash::vk::KhrSharedPresentableImageFn::load(
1255
23
                &proc_addr_loader,
1256
23
            )),
1257
23
            khr_external_fence_win32: Arc::new(ash::vk::KhrExternalFenceWin32Fn::load(
1258
23
                &proc_addr_loader,
1259
23
            )),
1260
23
            khr_external_fence_fd: Arc::new(ash::vk::KhrExternalFenceFdFn::load(&proc_addr_loader)),
1261
23
            khr_present_wait: Arc::new(ash::vk::KhrPresentWaitFn::load(&proc_addr_loader)),
1262
23
            khr_deferred_host_operations: Arc::new(ash::vk::KhrDeferredHostOperationsFn::load(
1263
23
                &proc_addr_loader,
1264
23
            )),
1265
23
            khr_pipeline_executable_properties: Arc::new(
1266
23
                ash::vk::KhrPipelineExecutablePropertiesFn::load(&proc_addr_loader),
1267
23
            ),
1268
23
            khr_video_encode_queue: Arc::new(ash::vk::KhrVideoEncodeQueueFn::load(
1269
23
                &proc_addr_loader,
1270
23
            )),
1271
23
            khr_synchronization2: Arc::new(ash::vk::KhrSynchronization2Fn::load(&proc_addr_loader)),
1272
23
            khr_ray_tracing_maintenance1: Arc::new(ash::vk::KhrRayTracingMaintenance1Fn::load(
1273
23
                &proc_addr_loader,
1274
23
            )),
1275
23
            android_native_buffer: Arc::new(ash::vk::AndroidNativeBufferFn::load(
1276
23
                &proc_addr_loader,
1277
23
            )),
1278
23
            ext_debug_marker: Arc::new(ash::vk::ExtDebugMarkerFn::load(&proc_addr_loader)),
1279
23
            ext_transform_feedback: Arc::new(ash::vk::ExtTransformFeedbackFn::load(
1280
23
                &proc_addr_loader,
1281
23
            )),
1282
23
            nvx_binary_import: Arc::new(ash::vk::NvxBinaryImportFn::load(&proc_addr_loader)),
1283
23
            nvx_image_view_handle: Arc::new(ash::vk::NvxImageViewHandleFn::load(&proc_addr_loader)),
1284
23
            amd_shader_info: Arc::new(ash::vk::AmdShaderInfoFn::load(&proc_addr_loader)),
1285
23
            nv_external_memory_win32: Arc::new(ash::vk::NvExternalMemoryWin32Fn::load(
1286
23
                &proc_addr_loader,
1287
23
            )),
1288
23
            ext_conditional_rendering: Arc::new(ash::vk::ExtConditionalRenderingFn::load(
1289
23
                &proc_addr_loader,
1290
23
            )),
1291
23
            nv_clip_space_w_scaling: Arc::new(ash::vk::NvClipSpaceWScalingFn::load(
1292
23
                &proc_addr_loader,
1293
23
            )),
1294
23
            ext_display_control: Arc::new(ash::vk::ExtDisplayControlFn::load(&proc_addr_loader)),
1295
23
            google_display_timing: Arc::new(ash::vk::GoogleDisplayTimingFn::load(
1296
23
                &proc_addr_loader,
1297
23
            )),
1298
23
            ext_discard_rectangles: Arc::new(ash::vk::ExtDiscardRectanglesFn::load(
1299
23
                &proc_addr_loader,
1300
23
            )),
1301
23
            ext_hdr_metadata: Arc::new(ash::vk::ExtHdrMetadataFn::load(&proc_addr_loader)),
1302
23
            android_external_memory_android_hardware_buffer: Arc::new(
1303
23
                ash::vk::AndroidExternalMemoryAndroidHardwareBufferFn::load(&proc_addr_loader),
1304
23
            ),
1305
23
            ext_image_drm_format_modifier: Arc::new(ash::vk::ExtImageDrmFormatModifierFn::load(
1306
23
                &proc_addr_loader,
1307
23
            )),
1308
23
            ext_validation_cache: Arc::new(ash::vk::ExtValidationCacheFn::load(&proc_addr_loader)),
1309
23
            nv_shading_rate_image: Arc::new(ash::vk::NvShadingRateImageFn::load(&proc_addr_loader)),
1310
23
            nv_ray_tracing: Arc::new(ash::vk::NvRayTracingFn::load(&proc_addr_loader)),
1311
23
            khr_ray_tracing_pipeline: Arc::new(ash::vk::KhrRayTracingPipelineFn::load(
1312
23
                &proc_addr_loader,
1313
23
            )),
1314
23
            ext_external_memory_host: Arc::new(ash::vk::ExtExternalMemoryHostFn::load(
1315
23
                &proc_addr_loader,
1316
23
            )),
1317
23
            amd_buffer_marker: Arc::new(ash::vk::AmdBufferMarkerFn::load(&proc_addr_loader)),
1318
23
            nv_mesh_shader: Arc::new(ash::vk::NvMeshShaderFn::load(&proc_addr_loader)),
1319
23
            nv_scissor_exclusive: Arc::new(ash::vk::NvScissorExclusiveFn::load(&proc_addr_loader)),
1320
23
            nv_device_diagnostic_checkpoints: Arc::new(
1321
23
                ash::vk::NvDeviceDiagnosticCheckpointsFn::load(&proc_addr_loader),
1322
23
            ),
1323
23
            intel_performance_query: Arc::new(ash::vk::IntelPerformanceQueryFn::load(
1324
23
                &proc_addr_loader,
1325
23
            )),
1326
23
            amd_display_native_hdr: Arc::new(ash::vk::AmdDisplayNativeHdrFn::load(
1327
23
                &proc_addr_loader,
1328
23
            )),
1329
23
            ext_line_rasterization: Arc::new(ash::vk::ExtLineRasterizationFn::load(
1330
23
                &proc_addr_loader,
1331
23
            )),
1332
23
            ext_swapchain_maintenance1: Arc::new(ash::vk::ExtSwapchainMaintenance1Fn::load(
1333
23
                &proc_addr_loader,
1334
23
            )),
1335
23
            nv_device_generated_commands: Arc::new(ash::vk::NvDeviceGeneratedCommandsFn::load(
1336
23
                &proc_addr_loader,
1337
23
            )),
1338
23
            ext_metal_objects: Arc::new(ash::vk::ExtMetalObjectsFn::load(&proc_addr_loader)),
1339
23
            ext_descriptor_buffer: Arc::new(ash::vk::ExtDescriptorBufferFn::load(
1340
23
                &proc_addr_loader,
1341
23
            )),
1342
23
            nv_fragment_shading_rate_enums: Arc::new(ash::vk::NvFragmentShadingRateEnumsFn::load(
1343
23
                &proc_addr_loader,
1344
23
            )),
1345
23
            ext_image_compression_control: Arc::new(ash::vk::ExtImageCompressionControlFn::load(
1346
23
                &proc_addr_loader,
1347
23
            )),
1348
23
            ext_vertex_input_dynamic_state: Arc::new(ash::vk::ExtVertexInputDynamicStateFn::load(
1349
23
                &proc_addr_loader,
1350
23
            )),
1351
23
            fuchsia_external_memory: Arc::new(ash::vk::FuchsiaExternalMemoryFn::load(
1352
23
                &proc_addr_loader,
1353
23
            )),
1354
23
            fuchsia_external_semaphore: Arc::new(ash::vk::FuchsiaExternalSemaphoreFn::load(
1355
23
                &proc_addr_loader,
1356
23
            )),
1357
23
            fuchsia_buffer_collection: Arc::new(ash::vk::FuchsiaBufferCollectionFn::load(
1358
23
                &proc_addr_loader,
1359
23
            )),
1360
23
            huawei_subpass_shading: Arc::new(ash::vk::HuaweiSubpassShadingFn::load(
1361
23
                &proc_addr_loader,
1362
23
            )),
1363
23
            huawei_invocation_mask: Arc::new(ash::vk::HuaweiInvocationMaskFn::load(
1364
23
                &proc_addr_loader,
1365
23
            )),
1366
23
            nv_external_memory_rdma: Arc::new(ash::vk::NvExternalMemoryRdmaFn::load(
1367
23
                &proc_addr_loader,
1368
23
            )),
1369
23
            ext_pipeline_properties: Arc::new(ash::vk::ExtPipelinePropertiesFn::load(
1370
23
                &proc_addr_loader,
1371
23
            )),
1372
23
            ext_extended_dynamic_state2: Arc::new(ash::vk::ExtExtendedDynamicState2Fn::load(
1373
23
                &proc_addr_loader,
1374
23
            )),
1375
23
            ext_color_write_enable: Arc::new(ash::vk::ExtColorWriteEnableFn::load(
1376
23
                &proc_addr_loader,
1377
23
            )),
1378
23
            ext_multi_draw: Arc::new(ash::vk::ExtMultiDrawFn::load(&proc_addr_loader)),
1379
23
            ext_opacity_micromap: Arc::new(ash::vk::ExtOpacityMicromapFn::load(&proc_addr_loader)),
1380
23
            ext_pageable_device_local_memory: Arc::new(
1381
23
                ash::vk::ExtPageableDeviceLocalMemoryFn::load(&proc_addr_loader),
1382
23
            ),
1383
23
            valve_descriptor_set_host_mapping: Arc::new(
1384
23
                ash::vk::ValveDescriptorSetHostMappingFn::load(&proc_addr_loader),
1385
23
            ),
1386
23
            nv_copy_memory_indirect: Arc::new(ash::vk::NvCopyMemoryIndirectFn::load(
1387
23
                &proc_addr_loader,
1388
23
            )),
1389
23
            nv_memory_decompression: Arc::new(ash::vk::NvMemoryDecompressionFn::load(
1390
23
                &proc_addr_loader,
1391
23
            )),
1392
23
            ext_extended_dynamic_state3: Arc::new(ash::vk::ExtExtendedDynamicState3Fn::load(
1393
23
                &proc_addr_loader,
1394
23
            )),
1395
23
            ext_shader_module_identifier: Arc::new(ash::vk::ExtShaderModuleIdentifierFn::load(
1396
23
                &proc_addr_loader,
1397
23
            )),
1398
23
            qcom_tile_properties: Arc::new(ash::vk::QcomTilePropertiesFn::load(&proc_addr_loader)),
1399
23
            khr_acceleration_structure: Arc::new(ash::vk::KhrAccelerationStructureFn::load(
1400
23
                &proc_addr_loader,
1401
23
            )),
1402
23
            ext_mesh_shader: Arc::new(ash::vk::ExtMeshShaderFn::load(&proc_addr_loader)),
1403
23
        }
1404
23
    }
1405
}
1406
pub(crate) struct InstanceDispatchTable {
1407
    pub core: Arc<ash::Instance>,
1408
    khr_surface: Arc<ash::vk::KhrSurfaceFn>,
1409
    khr_swapchain: Arc<ash::vk::KhrSwapchainFn>,
1410
    khr_display: Arc<ash::vk::KhrDisplayFn>,
1411
    khr_xlib_surface: Arc<ash::vk::KhrXlibSurfaceFn>,
1412
    khr_xcb_surface: Arc<ash::vk::KhrXcbSurfaceFn>,
1413
    khr_wayland_surface: Arc<ash::vk::KhrWaylandSurfaceFn>,
1414
    khr_android_surface: Arc<ash::vk::KhrAndroidSurfaceFn>,
1415
    khr_win32_surface: Arc<ash::vk::KhrWin32SurfaceFn>,
1416
    khr_video_queue: Arc<ash::vk::KhrVideoQueueFn>,
1417
    khr_performance_query: Arc<ash::vk::KhrPerformanceQueryFn>,
1418
    khr_get_surface_capabilities2: Arc<ash::vk::KhrGetSurfaceCapabilities2Fn>,
1419
    khr_get_display_properties2: Arc<ash::vk::KhrGetDisplayProperties2Fn>,
1420
    khr_fragment_shading_rate: Arc<ash::vk::KhrFragmentShadingRateFn>,
1421
    #[allow(deprecated)]
1422
    ext_debug_report: Arc<ash::vk::ExtDebugReportFn>,
1423
    ggp_stream_descriptor_surface: Arc<ash::vk::GgpStreamDescriptorSurfaceFn>,
1424
    nv_external_memory_capabilities: Arc<ash::vk::NvExternalMemoryCapabilitiesFn>,
1425
    nn_vi_surface: Arc<ash::vk::NnViSurfaceFn>,
1426
    ext_direct_mode_display: Arc<ash::vk::ExtDirectModeDisplayFn>,
1427
    ext_acquire_xlib_display: Arc<ash::vk::ExtAcquireXlibDisplayFn>,
1428
    ext_display_surface_counter: Arc<ash::vk::ExtDisplaySurfaceCounterFn>,
1429
    mvk_ios_surface: Arc<ash::vk::MvkIosSurfaceFn>,
1430
    mvk_macos_surface: Arc<ash::vk::MvkMacosSurfaceFn>,
1431
    ext_debug_utils: Arc<ash::vk::ExtDebugUtilsFn>,
1432
    ext_sample_locations: Arc<ash::vk::ExtSampleLocationsFn>,
1433
    ext_calibrated_timestamps: Arc<ash::vk::ExtCalibratedTimestampsFn>,
1434
    fuchsia_imagepipe_surface: Arc<ash::vk::FuchsiaImagepipeSurfaceFn>,
1435
    ext_metal_surface: Arc<ash::vk::ExtMetalSurfaceFn>,
1436
    nv_cooperative_matrix: Arc<ash::vk::NvCooperativeMatrixFn>,
1437
    nv_coverage_reduction_mode: Arc<ash::vk::NvCoverageReductionModeFn>,
1438
    ext_full_screen_exclusive: Arc<ash::vk::ExtFullScreenExclusiveFn>,
1439
    ext_headless_surface: Arc<ash::vk::ExtHeadlessSurfaceFn>,
1440
    ext_acquire_drm_display: Arc<ash::vk::ExtAcquireDrmDisplayFn>,
1441
    nv_acquire_winrt_display: Arc<ash::vk::NvAcquireWinrtDisplayFn>,
1442
    ext_directfb_surface: Arc<ash::vk::ExtDirectfbSurfaceFn>,
1443
    qnx_screen_surface: Arc<ash::vk::QnxScreenSurfaceFn>,
1444
    nv_optical_flow: Arc<ash::vk::NvOpticalFlowFn>,
1445
}
1446
impl InstanceDispatchTable {
1447
50
    pub(crate) fn load(
1448
50
        get_instance_proc_addr: vk::PFN_vkGetInstanceProcAddr,
1449
50
        instance: Arc<ash::Instance>,
1450
50
    ) -> Self {
1451
50
        let proc_addr_loader = get_instance_proc_addr_loader(get_instance_proc_addr, &instance);
1452
50
        Self {
1453
50
            core: Arc::clone(&instance),
1454
50
            khr_surface: Arc::new(ash::vk::KhrSurfaceFn::load(&proc_addr_loader)),
1455
50
            khr_swapchain: Arc::new(ash::vk::KhrSwapchainFn::load(&proc_addr_loader)),
1456
50
            khr_display: Arc::new(ash::vk::KhrDisplayFn::load(&proc_addr_loader)),
1457
50
            khr_xlib_surface: Arc::new(ash::vk::KhrXlibSurfaceFn::load(&proc_addr_loader)),
1458
50
            khr_xcb_surface: Arc::new(ash::vk::KhrXcbSurfaceFn::load(&proc_addr_loader)),
1459
50
            khr_wayland_surface: Arc::new(ash::vk::KhrWaylandSurfaceFn::load(&proc_addr_loader)),
1460
50
            khr_android_surface: Arc::new(ash::vk::KhrAndroidSurfaceFn::load(&proc_addr_loader)),
1461
50
            khr_win32_surface: Arc::new(ash::vk::KhrWin32SurfaceFn::load(&proc_addr_loader)),
1462
50
            khr_video_queue: Arc::new(ash::vk::KhrVideoQueueFn::load(&proc_addr_loader)),
1463
50
            khr_performance_query: Arc::new(ash::vk::KhrPerformanceQueryFn::load(
1464
50
                &proc_addr_loader,
1465
50
            )),
1466
50
            khr_get_surface_capabilities2: Arc::new(ash::vk::KhrGetSurfaceCapabilities2Fn::load(
1467
50
                &proc_addr_loader,
1468
50
            )),
1469
50
            khr_get_display_properties2: Arc::new(ash::vk::KhrGetDisplayProperties2Fn::load(
1470
50
                &proc_addr_loader,
1471
50
            )),
1472
50
            khr_fragment_shading_rate: Arc::new(ash::vk::KhrFragmentShadingRateFn::load(
1473
50
                &proc_addr_loader,
1474
50
            )),
1475
50
            ext_debug_report: Arc::new(ash::vk::ExtDebugReportFn::load(&proc_addr_loader)),
1476
50
            ggp_stream_descriptor_surface: Arc::new(ash::vk::GgpStreamDescriptorSurfaceFn::load(
1477
50
                &proc_addr_loader,
1478
50
            )),
1479
50
            nv_external_memory_capabilities: Arc::new(
1480
50
                ash::vk::NvExternalMemoryCapabilitiesFn::load(&proc_addr_loader),
1481
50
            ),
1482
50
            nn_vi_surface: Arc::new(ash::vk::NnViSurfaceFn::load(&proc_addr_loader)),
1483
50
            ext_direct_mode_display: Arc::new(ash::vk::ExtDirectModeDisplayFn::load(
1484
50
                &proc_addr_loader,
1485
50
            )),
1486
50
            ext_acquire_xlib_display: Arc::new(ash::vk::ExtAcquireXlibDisplayFn::load(
1487
50
                &proc_addr_loader,
1488
50
            )),
1489
50
            ext_display_surface_counter: Arc::new(ash::vk::ExtDisplaySurfaceCounterFn::load(
1490
50
                &proc_addr_loader,
1491
50
            )),
1492
50
            mvk_ios_surface: Arc::new(ash::vk::MvkIosSurfaceFn::load(&proc_addr_loader)),
1493
50
            mvk_macos_surface: Arc::new(ash::vk::MvkMacosSurfaceFn::load(&proc_addr_loader)),
1494
50
            ext_debug_utils: Arc::new(ash::vk::ExtDebugUtilsFn::load(&proc_addr_loader)),
1495
50
            ext_sample_locations: Arc::new(ash::vk::ExtSampleLocationsFn::load(&proc_addr_loader)),
1496
50
            ext_calibrated_timestamps: Arc::new(ash::vk::ExtCalibratedTimestampsFn::load(
1497
50
                &proc_addr_loader,
1498
50
            )),
1499
50
            fuchsia_imagepipe_surface: Arc::new(ash::vk::FuchsiaImagepipeSurfaceFn::load(
1500
50
                &proc_addr_loader,
1501
50
            )),
1502
50
            ext_metal_surface: Arc::new(ash::vk::ExtMetalSurfaceFn::load(&proc_addr_loader)),
1503
50
            nv_cooperative_matrix: Arc::new(ash::vk::NvCooperativeMatrixFn::load(
1504
50
                &proc_addr_loader,
1505
50
            )),
1506
50
            nv_coverage_reduction_mode: Arc::new(ash::vk::NvCoverageReductionModeFn::load(
1507
50
                &proc_addr_loader,
1508
50
            )),
1509
50
            ext_full_screen_exclusive: Arc::new(ash::vk::ExtFullScreenExclusiveFn::load(
1510
50
                &proc_addr_loader,
1511
50
            )),
1512
50
            ext_headless_surface: Arc::new(ash::vk::ExtHeadlessSurfaceFn::load(&proc_addr_loader)),
1513
50
            ext_acquire_drm_display: Arc::new(ash::vk::ExtAcquireDrmDisplayFn::load(
1514
50
                &proc_addr_loader,
1515
50
            )),
1516
50
            nv_acquire_winrt_display: Arc::new(ash::vk::NvAcquireWinrtDisplayFn::load(
1517
50
                &proc_addr_loader,
1518
50
            )),
1519
50
            ext_directfb_surface: Arc::new(ash::vk::ExtDirectfbSurfaceFn::load(&proc_addr_loader)),
1520
50
            qnx_screen_surface: Arc::new(ash::vk::QnxScreenSurfaceFn::load(&proc_addr_loader)),
1521
50
            nv_optical_flow: Arc::new(ash::vk::NvOpticalFlowFn::load(&proc_addr_loader)),
1522
50
        }
1523
50
    }
1524
}
1525
1526
// Unhandled commands:
1527
// * vkMapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1528
// * vkUnmapMemory2KHR: The ash Rust binding doesn't have proper bindings yet.
1529
// * vkCmdSetDiscardRectangleEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1530
// * vkCmdSetDiscardRectangleModeEXT: The ash Rust binding doesn't have proper bindings yet.
1531
// * vkCmdSetExclusiveScissorEnableNV: The ash Rust binding doesn't have proper bindings yet.
1532
// * vkGetDeviceFaultInfoEXT: The length info and the data pointer are nested in structs.
1533
// * vkCmdDrawClusterHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1534
// * vkCmdDrawClusterIndirectHUAWEI: The ash Rust binding doesn't have proper bindings yet.
1535
// * vkCreateShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1536
// * vkDestroyShaderEXT: The ash Rust binding doesn't have proper bindings yet.
1537
// * vkGetShaderBinaryDataEXT: The ash Rust binding doesn't have proper bindings yet.
1538
// * vkCmdBindShadersEXT: The ash Rust binding doesn't have proper bindings yet.
1539
// * vkCmdSetAttachmentFeedbackLoopEnableEXT: The ash Rust binding doesn't have proper bindings yet.
1540
// * vkCmdBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1541
//   yet.
1542
// * vkCmdBuildAccelerationStructuresIndirectKHR: Dynamic multi-dimensional array bindings are not
1543
//   supported yet.
1544
// * vkBuildAccelerationStructuresKHR: Dynamic multi-dimensional array bindings are not supported
1545
//   yet.
1546
1547
impl<T: Layer> Global<T> {
1548
74
    pub(crate) fn create_device_commands(
1549
74
        &self,
1550
74
        instance_info: &T::InstanceInfo,
1551
74
        device_info: Option<&T::DeviceInfo>,
1552
74
    ) -> Box<[VulkanCommand]> {
1553
74
        let hooked_commands = self
1554
74
            .layer_info
1555
74
            .hooked_device_commands(instance_info, device_info)
1556
74
            .collect::<HashSet<_>>();
1557
74
        Box::new([
1558
74
            VulkanCommand {
1559
74
                name: "vkAcquireFullScreenExclusiveModeEXT",
1560
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
1561
74
                hooked: hooked_commands
1562
74
                    .contains(&LayerVulkanCommand::AcquireFullScreenExclusiveModeExt),
1563
74
                proc: unsafe {
1564
74
                    std::mem::transmute::<
1565
74
                        vk::PFN_vkAcquireFullScreenExclusiveModeEXT,
1566
74
                        vk::PFN_vkVoidFunction,
1567
74
                    >(Self::acquire_full_screen_exclusive_mode_ext)
1568
74
                },
1569
74
            },
1570
74
            VulkanCommand {
1571
74
                name: "vkAcquireImageANDROID",
1572
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
1573
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireImageAndroid),
1574
74
                proc: unsafe {
1575
74
                    std::mem::transmute::<vk::PFN_vkAcquireImageANDROID, vk::PFN_vkVoidFunction>(
1576
74
                        Self::acquire_image_android,
1577
74
                    )
1578
74
                },
1579
74
            },
1580
74
            VulkanCommand {
1581
74
                name: "vkAcquireNextImage2KHR",
1582
74
                features: smallvec![
1583
0
                    Feature::Extension(Extension::KHRSwapchain),
1584
0
                    Feature::Extension(Extension::KHRDeviceGroup)
1585
                ],
1586
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImage2Khr),
1587
74
                proc: unsafe {
1588
74
                    std::mem::transmute::<vk::PFN_vkAcquireNextImage2KHR, vk::PFN_vkVoidFunction>(
1589
74
                        Self::acquire_next_image2_khr,
1590
74
                    )
1591
74
                },
1592
74
            },
1593
74
            VulkanCommand {
1594
74
                name: "vkAcquireNextImageKHR",
1595
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
1596
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireNextImageKhr),
1597
74
                proc: unsafe {
1598
74
                    std::mem::transmute::<vk::PFN_vkAcquireNextImageKHR, vk::PFN_vkVoidFunction>(
1599
74
                        Self::acquire_next_image_khr,
1600
74
                    )
1601
74
                },
1602
74
            },
1603
74
            VulkanCommand {
1604
74
                name: "vkAcquirePerformanceConfigurationINTEL",
1605
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
1606
74
                hooked: hooked_commands
1607
74
                    .contains(&LayerVulkanCommand::AcquirePerformanceConfigurationIntel),
1608
74
                proc: unsafe {
1609
74
                    std::mem::transmute::<
1610
74
                        vk::PFN_vkAcquirePerformanceConfigurationINTEL,
1611
74
                        vk::PFN_vkVoidFunction,
1612
74
                    >(Self::acquire_performance_configuration_intel)
1613
74
                },
1614
74
            },
1615
74
            VulkanCommand {
1616
74
                name: "vkAcquireProfilingLockKHR",
1617
74
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
1618
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireProfilingLockKhr),
1619
74
                proc: unsafe {
1620
74
                    std::mem::transmute::<vk::PFN_vkAcquireProfilingLockKHR, vk::PFN_vkVoidFunction>(
1621
74
                        Self::acquire_profiling_lock_khr,
1622
74
                    )
1623
74
                },
1624
74
            },
1625
74
            VulkanCommand {
1626
74
                name: "vkAllocateCommandBuffers",
1627
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1628
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateCommandBuffers),
1629
74
                proc: unsafe {
1630
74
                    std::mem::transmute::<vk::PFN_vkAllocateCommandBuffers, vk::PFN_vkVoidFunction>(
1631
74
                        Self::allocate_command_buffers,
1632
74
                    )
1633
74
                },
1634
74
            },
1635
74
            VulkanCommand {
1636
74
                name: "vkAllocateDescriptorSets",
1637
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1638
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateDescriptorSets),
1639
74
                proc: unsafe {
1640
74
                    std::mem::transmute::<vk::PFN_vkAllocateDescriptorSets, vk::PFN_vkVoidFunction>(
1641
74
                        Self::allocate_descriptor_sets,
1642
74
                    )
1643
74
                },
1644
74
            },
1645
74
            VulkanCommand {
1646
74
                name: "vkAllocateMemory",
1647
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1648
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::AllocateMemory),
1649
74
                proc: unsafe {
1650
74
                    std::mem::transmute::<vk::PFN_vkAllocateMemory, vk::PFN_vkVoidFunction>(
1651
74
                        Self::allocate_memory,
1652
74
                    )
1653
74
                },
1654
74
            },
1655
74
            VulkanCommand {
1656
74
                name: "vkBeginCommandBuffer",
1657
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1658
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BeginCommandBuffer),
1659
74
                proc: unsafe {
1660
74
                    std::mem::transmute::<vk::PFN_vkBeginCommandBuffer, vk::PFN_vkVoidFunction>(
1661
74
                        Self::begin_command_buffer,
1662
74
                    )
1663
74
                },
1664
74
            },
1665
74
            VulkanCommand {
1666
74
                name: "vkBindAccelerationStructureMemoryNV",
1667
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
1668
74
                hooked: hooked_commands
1669
74
                    .contains(&LayerVulkanCommand::BindAccelerationStructureMemoryNv),
1670
74
                proc: unsafe {
1671
74
                    std::mem::transmute::<
1672
74
                        vk::PFN_vkBindAccelerationStructureMemoryNV,
1673
74
                        vk::PFN_vkVoidFunction,
1674
74
                    >(Self::bind_acceleration_structure_memory_nv)
1675
74
                },
1676
74
            },
1677
74
            VulkanCommand {
1678
74
                name: "vkBindBufferMemory",
1679
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1680
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory),
1681
74
                proc: unsafe {
1682
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory, vk::PFN_vkVoidFunction>(
1683
74
                        Self::bind_buffer_memory,
1684
74
                    )
1685
74
                },
1686
74
            },
1687
74
            VulkanCommand {
1688
74
                name: "vkBindBufferMemory2",
1689
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1690
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1691
74
                proc: unsafe {
1692
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1693
74
                        Self::bind_buffer_memory2,
1694
74
                    )
1695
74
                },
1696
74
            },
1697
74
            VulkanCommand {
1698
74
                name: "vkBindBufferMemory2KHR",
1699
74
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1700
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindBufferMemory2),
1701
74
                proc: unsafe {
1702
74
                    std::mem::transmute::<vk::PFN_vkBindBufferMemory2, vk::PFN_vkVoidFunction>(
1703
74
                        Self::bind_buffer_memory2,
1704
74
                    )
1705
74
                },
1706
74
            },
1707
74
            VulkanCommand {
1708
74
                name: "vkBindImageMemory",
1709
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1710
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory),
1711
74
                proc: unsafe {
1712
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory, vk::PFN_vkVoidFunction>(
1713
74
                        Self::bind_image_memory,
1714
74
                    )
1715
74
                },
1716
74
            },
1717
74
            VulkanCommand {
1718
74
                name: "vkBindImageMemory2",
1719
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
1720
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1721
74
                proc: unsafe {
1722
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1723
74
                        Self::bind_image_memory2,
1724
74
                    )
1725
74
                },
1726
74
            },
1727
74
            VulkanCommand {
1728
74
                name: "vkBindImageMemory2KHR",
1729
74
                features: smallvec![
Feature::Extension(Extension::KHRBindMemory2)0
],
1730
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindImageMemory2),
1731
74
                proc: unsafe {
1732
74
                    std::mem::transmute::<vk::PFN_vkBindImageMemory2, vk::PFN_vkVoidFunction>(
1733
74
                        Self::bind_image_memory2,
1734
74
                    )
1735
74
                },
1736
74
            },
1737
74
            VulkanCommand {
1738
74
                name: "vkBindOpticalFlowSessionImageNV",
1739
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
1740
74
                hooked: hooked_commands
1741
74
                    .contains(&LayerVulkanCommand::BindOpticalFlowSessionImageNv),
1742
74
                proc: unsafe {
1743
74
                    std::mem::transmute::<
1744
74
                        vk::PFN_vkBindOpticalFlowSessionImageNV,
1745
74
                        vk::PFN_vkVoidFunction,
1746
74
                    >(Self::bind_optical_flow_session_image_nv)
1747
74
                },
1748
74
            },
1749
74
            VulkanCommand {
1750
74
                name: "vkBindVideoSessionMemoryKHR",
1751
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1752
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BindVideoSessionMemoryKhr),
1753
74
                proc: unsafe {
1754
74
                    std::mem::transmute::<vk::PFN_vkBindVideoSessionMemoryKHR, vk::PFN_vkVoidFunction>(
1755
74
                        Self::bind_video_session_memory_khr,
1756
74
                    )
1757
74
                },
1758
74
            },
1759
74
            VulkanCommand {
1760
74
                name: "vkBuildMicromapsEXT",
1761
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
1762
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::BuildMicromapsExt),
1763
74
                proc: unsafe {
1764
74
                    std::mem::transmute::<vk::PFN_vkBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
1765
74
                        Self::build_micromaps_ext,
1766
74
                    )
1767
74
                },
1768
74
            },
1769
74
            VulkanCommand {
1770
74
                name: "vkCmdBeginConditionalRenderingEXT",
1771
74
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
1772
74
                hooked: hooked_commands
1773
74
                    .contains(&LayerVulkanCommand::CmdBeginConditionalRenderingExt),
1774
74
                proc: unsafe {
1775
74
                    std::mem::transmute::<
1776
74
                        vk::PFN_vkCmdBeginConditionalRenderingEXT,
1777
74
                        vk::PFN_vkVoidFunction,
1778
74
                    >(Self::cmd_begin_conditional_rendering_ext)
1779
74
                },
1780
74
            },
1781
74
            VulkanCommand {
1782
74
                name: "vkCmdBeginDebugUtilsLabelEXT",
1783
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
1784
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginDebugUtilsLabelExt),
1785
74
                proc: unsafe {
1786
74
                    std::mem::transmute::<
1787
74
                        vk::PFN_vkCmdBeginDebugUtilsLabelEXT,
1788
74
                        vk::PFN_vkVoidFunction,
1789
74
                    >(Self::cmd_begin_debug_utils_label_ext)
1790
74
                },
1791
74
            },
1792
74
            VulkanCommand {
1793
74
                name: "vkCmdBeginQuery",
1794
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1795
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQuery),
1796
74
                proc: unsafe {
1797
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginQuery, vk::PFN_vkVoidFunction>(
1798
74
                        Self::cmd_begin_query,
1799
74
                    )
1800
74
                },
1801
74
            },
1802
74
            VulkanCommand {
1803
74
                name: "vkCmdBeginQueryIndexedEXT",
1804
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1805
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginQueryIndexedExt),
1806
74
                proc: unsafe {
1807
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginQueryIndexedEXT, vk::PFN_vkVoidFunction>(
1808
74
                        Self::cmd_begin_query_indexed_ext,
1809
74
                    )
1810
74
                },
1811
74
            },
1812
74
            VulkanCommand {
1813
74
                name: "vkCmdBeginRenderPass",
1814
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1815
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass),
1816
74
                proc: unsafe {
1817
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass, vk::PFN_vkVoidFunction>(
1818
74
                        Self::cmd_begin_render_pass,
1819
74
                    )
1820
74
                },
1821
74
            },
1822
74
            VulkanCommand {
1823
74
                name: "vkCmdBeginRenderPass2",
1824
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
1825
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1826
74
                proc: unsafe {
1827
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1828
74
                        Self::cmd_begin_render_pass2,
1829
74
                    )
1830
74
                },
1831
74
            },
1832
74
            VulkanCommand {
1833
74
                name: "vkCmdBeginRenderPass2KHR",
1834
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
1835
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRenderPass2),
1836
74
                proc: unsafe {
1837
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRenderPass2, vk::PFN_vkVoidFunction>(
1838
74
                        Self::cmd_begin_render_pass2,
1839
74
                    )
1840
74
                },
1841
74
            },
1842
74
            VulkanCommand {
1843
74
                name: "vkCmdBeginRendering",
1844
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1845
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1846
74
                proc: unsafe {
1847
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1848
74
                        Self::cmd_begin_rendering,
1849
74
                    )
1850
74
                },
1851
74
            },
1852
74
            VulkanCommand {
1853
74
                name: "vkCmdBeginRenderingKHR",
1854
74
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
1855
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginRendering),
1856
74
                proc: unsafe {
1857
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginRendering, vk::PFN_vkVoidFunction>(
1858
74
                        Self::cmd_begin_rendering,
1859
74
                    )
1860
74
                },
1861
74
            },
1862
74
            VulkanCommand {
1863
74
                name: "vkCmdBeginTransformFeedbackEXT",
1864
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1865
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginTransformFeedbackExt),
1866
74
                proc: unsafe {
1867
74
                    std::mem::transmute::<
1868
74
                        vk::PFN_vkCmdBeginTransformFeedbackEXT,
1869
74
                        vk::PFN_vkVoidFunction,
1870
74
                    >(Self::cmd_begin_transform_feedback_ext)
1871
74
                },
1872
74
            },
1873
74
            VulkanCommand {
1874
74
                name: "vkCmdBeginVideoCodingKHR",
1875
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
1876
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBeginVideoCodingKhr),
1877
74
                proc: unsafe {
1878
74
                    std::mem::transmute::<vk::PFN_vkCmdBeginVideoCodingKHR, vk::PFN_vkVoidFunction>(
1879
74
                        Self::cmd_begin_video_coding_khr,
1880
74
                    )
1881
74
                },
1882
74
            },
1883
74
            VulkanCommand {
1884
74
                name: "vkCmdBindDescriptorBufferEmbeddedSamplersEXT",
1885
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1886
74
                hooked: hooked_commands
1887
74
                    .contains(&LayerVulkanCommand::CmdBindDescriptorBufferEmbeddedSamplersExt),
1888
74
                proc: unsafe {
1889
74
                    std::mem::transmute::<
1890
74
                        vk::PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT,
1891
74
                        vk::PFN_vkVoidFunction,
1892
74
                    >(Self::cmd_bind_descriptor_buffer_embedded_samplers_ext)
1893
74
                },
1894
74
            },
1895
74
            VulkanCommand {
1896
74
                name: "vkCmdBindDescriptorBuffersEXT",
1897
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
1898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorBuffersExt),
1899
74
                proc: unsafe {
1900
74
                    std::mem::transmute::<
1901
74
                        vk::PFN_vkCmdBindDescriptorBuffersEXT,
1902
74
                        vk::PFN_vkVoidFunction,
1903
74
                    >(Self::cmd_bind_descriptor_buffers_ext)
1904
74
                },
1905
74
            },
1906
74
            VulkanCommand {
1907
74
                name: "vkCmdBindDescriptorSets",
1908
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1909
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindDescriptorSets),
1910
74
                proc: unsafe {
1911
74
                    std::mem::transmute::<vk::PFN_vkCmdBindDescriptorSets, vk::PFN_vkVoidFunction>(
1912
74
                        Self::cmd_bind_descriptor_sets,
1913
74
                    )
1914
74
                },
1915
74
            },
1916
74
            VulkanCommand {
1917
74
                name: "vkCmdBindIndexBuffer",
1918
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1919
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindIndexBuffer),
1920
74
                proc: unsafe {
1921
74
                    std::mem::transmute::<vk::PFN_vkCmdBindIndexBuffer, vk::PFN_vkVoidFunction>(
1922
74
                        Self::cmd_bind_index_buffer,
1923
74
                    )
1924
74
                },
1925
74
            },
1926
74
            VulkanCommand {
1927
74
                name: "vkCmdBindInvocationMaskHUAWEI",
1928
74
                features: smallvec![
Feature::Extension(Extension::HUAWEIInvocationMask)0
],
1929
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindInvocationMaskHuawei),
1930
74
                proc: unsafe {
1931
74
                    std::mem::transmute::<
1932
74
                        vk::PFN_vkCmdBindInvocationMaskHUAWEI,
1933
74
                        vk::PFN_vkVoidFunction,
1934
74
                    >(Self::cmd_bind_invocation_mask_huawei)
1935
74
                },
1936
74
            },
1937
74
            VulkanCommand {
1938
74
                name: "vkCmdBindPipeline",
1939
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1940
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipeline),
1941
74
                proc: unsafe {
1942
74
                    std::mem::transmute::<vk::PFN_vkCmdBindPipeline, vk::PFN_vkVoidFunction>(
1943
74
                        Self::cmd_bind_pipeline,
1944
74
                    )
1945
74
                },
1946
74
            },
1947
74
            VulkanCommand {
1948
74
                name: "vkCmdBindPipelineShaderGroupNV",
1949
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
1950
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindPipelineShaderGroupNv),
1951
74
                proc: unsafe {
1952
74
                    std::mem::transmute::<
1953
74
                        vk::PFN_vkCmdBindPipelineShaderGroupNV,
1954
74
                        vk::PFN_vkVoidFunction,
1955
74
                    >(Self::cmd_bind_pipeline_shader_group_nv)
1956
74
                },
1957
74
            },
1958
74
            VulkanCommand {
1959
74
                name: "vkCmdBindShadingRateImageNV",
1960
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
1961
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindShadingRateImageNv),
1962
74
                proc: unsafe {
1963
74
                    std::mem::transmute::<vk::PFN_vkCmdBindShadingRateImageNV, vk::PFN_vkVoidFunction>(
1964
74
                        Self::cmd_bind_shading_rate_image_nv,
1965
74
                    )
1966
74
                },
1967
74
            },
1968
74
            VulkanCommand {
1969
74
                name: "vkCmdBindTransformFeedbackBuffersEXT",
1970
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
1971
74
                hooked: hooked_commands
1972
74
                    .contains(&LayerVulkanCommand::CmdBindTransformFeedbackBuffersExt),
1973
74
                proc: unsafe {
1974
74
                    std::mem::transmute::<
1975
74
                        vk::PFN_vkCmdBindTransformFeedbackBuffersEXT,
1976
74
                        vk::PFN_vkVoidFunction,
1977
74
                    >(Self::cmd_bind_transform_feedback_buffers_ext)
1978
74
                },
1979
74
            },
1980
74
            VulkanCommand {
1981
74
                name: "vkCmdBindVertexBuffers",
1982
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
1983
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers),
1984
74
                proc: unsafe {
1985
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers, vk::PFN_vkVoidFunction>(
1986
74
                        Self::cmd_bind_vertex_buffers,
1987
74
                    )
1988
74
                },
1989
74
            },
1990
74
            VulkanCommand {
1991
74
                name: "vkCmdBindVertexBuffers2",
1992
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
1993
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
1994
74
                proc: unsafe {
1995
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
1996
74
                        Self::cmd_bind_vertex_buffers2,
1997
74
                    )
1998
74
                },
1999
74
            },
2000
74
            VulkanCommand {
2001
74
                name: "vkCmdBindVertexBuffers2EXT",
2002
74
                features: smallvec![
2003
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
2004
0
                    Feature::Extension(Extension::EXTShaderObject)
2005
                ],
2006
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBindVertexBuffers2),
2007
74
                proc: unsafe {
2008
74
                    std::mem::transmute::<vk::PFN_vkCmdBindVertexBuffers2, vk::PFN_vkVoidFunction>(
2009
74
                        Self::cmd_bind_vertex_buffers2,
2010
74
                    )
2011
74
                },
2012
74
            },
2013
74
            VulkanCommand {
2014
74
                name: "vkCmdBlitImage",
2015
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2016
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage),
2017
74
                proc: unsafe {
2018
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage, vk::PFN_vkVoidFunction>(
2019
74
                        Self::cmd_blit_image,
2020
74
                    )
2021
74
                },
2022
74
            },
2023
74
            VulkanCommand {
2024
74
                name: "vkCmdBlitImage2",
2025
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2026
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2027
74
                proc: unsafe {
2028
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2029
74
                        Self::cmd_blit_image2,
2030
74
                    )
2031
74
                },
2032
74
            },
2033
74
            VulkanCommand {
2034
74
                name: "vkCmdBlitImage2KHR",
2035
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2036
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBlitImage2),
2037
74
                proc: unsafe {
2038
74
                    std::mem::transmute::<vk::PFN_vkCmdBlitImage2, vk::PFN_vkVoidFunction>(
2039
74
                        Self::cmd_blit_image2,
2040
74
                    )
2041
74
                },
2042
74
            },
2043
74
            VulkanCommand {
2044
74
                name: "vkCmdBuildAccelerationStructureNV",
2045
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2046
74
                hooked: hooked_commands
2047
74
                    .contains(&LayerVulkanCommand::CmdBuildAccelerationStructureNv),
2048
74
                proc: unsafe {
2049
74
                    std::mem::transmute::<
2050
74
                        vk::PFN_vkCmdBuildAccelerationStructureNV,
2051
74
                        vk::PFN_vkVoidFunction,
2052
74
                    >(Self::cmd_build_acceleration_structure_nv)
2053
74
                },
2054
74
            },
2055
74
            VulkanCommand {
2056
74
                name: "vkCmdBuildMicromapsEXT",
2057
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2058
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdBuildMicromapsExt),
2059
74
                proc: unsafe {
2060
74
                    std::mem::transmute::<vk::PFN_vkCmdBuildMicromapsEXT, vk::PFN_vkVoidFunction>(
2061
74
                        Self::cmd_build_micromaps_ext,
2062
74
                    )
2063
74
                },
2064
74
            },
2065
74
            VulkanCommand {
2066
74
                name: "vkCmdClearAttachments",
2067
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2068
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearAttachments),
2069
74
                proc: unsafe {
2070
74
                    std::mem::transmute::<vk::PFN_vkCmdClearAttachments, vk::PFN_vkVoidFunction>(
2071
74
                        Self::cmd_clear_attachments,
2072
74
                    )
2073
74
                },
2074
74
            },
2075
74
            VulkanCommand {
2076
74
                name: "vkCmdClearColorImage",
2077
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2078
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearColorImage),
2079
74
                proc: unsafe {
2080
74
                    std::mem::transmute::<vk::PFN_vkCmdClearColorImage, vk::PFN_vkVoidFunction>(
2081
74
                        Self::cmd_clear_color_image,
2082
74
                    )
2083
74
                },
2084
74
            },
2085
74
            VulkanCommand {
2086
74
                name: "vkCmdClearDepthStencilImage",
2087
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2088
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdClearDepthStencilImage),
2089
74
                proc: unsafe {
2090
74
                    std::mem::transmute::<vk::PFN_vkCmdClearDepthStencilImage, vk::PFN_vkVoidFunction>(
2091
74
                        Self::cmd_clear_depth_stencil_image,
2092
74
                    )
2093
74
                },
2094
74
            },
2095
74
            VulkanCommand {
2096
74
                name: "vkCmdControlVideoCodingKHR",
2097
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2098
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdControlVideoCodingKhr),
2099
74
                proc: unsafe {
2100
74
                    std::mem::transmute::<vk::PFN_vkCmdControlVideoCodingKHR, vk::PFN_vkVoidFunction>(
2101
74
                        Self::cmd_control_video_coding_khr,
2102
74
                    )
2103
74
                },
2104
74
            },
2105
74
            VulkanCommand {
2106
74
                name: "vkCmdCopyAccelerationStructureKHR",
2107
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2108
74
                hooked: hooked_commands
2109
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureKhr),
2110
74
                proc: unsafe {
2111
74
                    std::mem::transmute::<
2112
74
                        vk::PFN_vkCmdCopyAccelerationStructureKHR,
2113
74
                        vk::PFN_vkVoidFunction,
2114
74
                    >(Self::cmd_copy_acceleration_structure_khr)
2115
74
                },
2116
74
            },
2117
74
            VulkanCommand {
2118
74
                name: "vkCmdCopyAccelerationStructureNV",
2119
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
2120
74
                hooked: hooked_commands
2121
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureNv),
2122
74
                proc: unsafe {
2123
74
                    std::mem::transmute::<
2124
74
                        vk::PFN_vkCmdCopyAccelerationStructureNV,
2125
74
                        vk::PFN_vkVoidFunction,
2126
74
                    >(Self::cmd_copy_acceleration_structure_nv)
2127
74
                },
2128
74
            },
2129
74
            VulkanCommand {
2130
74
                name: "vkCmdCopyAccelerationStructureToMemoryKHR",
2131
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2132
74
                hooked: hooked_commands
2133
74
                    .contains(&LayerVulkanCommand::CmdCopyAccelerationStructureToMemoryKhr),
2134
74
                proc: unsafe {
2135
74
                    std::mem::transmute::<
2136
74
                        vk::PFN_vkCmdCopyAccelerationStructureToMemoryKHR,
2137
74
                        vk::PFN_vkVoidFunction,
2138
74
                    >(Self::cmd_copy_acceleration_structure_to_memory_khr)
2139
74
                },
2140
74
            },
2141
74
            VulkanCommand {
2142
74
                name: "vkCmdCopyBuffer",
2143
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2144
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer),
2145
74
                proc: unsafe {
2146
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer, vk::PFN_vkVoidFunction>(
2147
74
                        Self::cmd_copy_buffer,
2148
74
                    )
2149
74
                },
2150
74
            },
2151
74
            VulkanCommand {
2152
74
                name: "vkCmdCopyBuffer2",
2153
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2154
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2155
74
                proc: unsafe {
2156
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2157
74
                        Self::cmd_copy_buffer2,
2158
74
                    )
2159
74
                },
2160
74
            },
2161
74
            VulkanCommand {
2162
74
                name: "vkCmdCopyBuffer2KHR",
2163
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2164
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBuffer2),
2165
74
                proc: unsafe {
2166
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBuffer2, vk::PFN_vkVoidFunction>(
2167
74
                        Self::cmd_copy_buffer2,
2168
74
                    )
2169
74
                },
2170
74
            },
2171
74
            VulkanCommand {
2172
74
                name: "vkCmdCopyBufferToImage",
2173
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2174
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage),
2175
74
                proc: unsafe {
2176
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage, vk::PFN_vkVoidFunction>(
2177
74
                        Self::cmd_copy_buffer_to_image,
2178
74
                    )
2179
74
                },
2180
74
            },
2181
74
            VulkanCommand {
2182
74
                name: "vkCmdCopyBufferToImage2",
2183
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2184
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2185
74
                proc: unsafe {
2186
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2187
74
                        Self::cmd_copy_buffer_to_image2,
2188
74
                    )
2189
74
                },
2190
74
            },
2191
74
            VulkanCommand {
2192
74
                name: "vkCmdCopyBufferToImage2KHR",
2193
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2194
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyBufferToImage2),
2195
74
                proc: unsafe {
2196
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyBufferToImage2, vk::PFN_vkVoidFunction>(
2197
74
                        Self::cmd_copy_buffer_to_image2,
2198
74
                    )
2199
74
                },
2200
74
            },
2201
74
            VulkanCommand {
2202
74
                name: "vkCmdCopyImage",
2203
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2204
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage),
2205
74
                proc: unsafe {
2206
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage, vk::PFN_vkVoidFunction>(
2207
74
                        Self::cmd_copy_image,
2208
74
                    )
2209
74
                },
2210
74
            },
2211
74
            VulkanCommand {
2212
74
                name: "vkCmdCopyImage2",
2213
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2214
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2215
74
                proc: unsafe {
2216
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2217
74
                        Self::cmd_copy_image2,
2218
74
                    )
2219
74
                },
2220
74
            },
2221
74
            VulkanCommand {
2222
74
                name: "vkCmdCopyImage2KHR",
2223
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2224
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImage2),
2225
74
                proc: unsafe {
2226
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImage2, vk::PFN_vkVoidFunction>(
2227
74
                        Self::cmd_copy_image2,
2228
74
                    )
2229
74
                },
2230
74
            },
2231
74
            VulkanCommand {
2232
74
                name: "vkCmdCopyImageToBuffer",
2233
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2234
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer),
2235
74
                proc: unsafe {
2236
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer, vk::PFN_vkVoidFunction>(
2237
74
                        Self::cmd_copy_image_to_buffer,
2238
74
                    )
2239
74
                },
2240
74
            },
2241
74
            VulkanCommand {
2242
74
                name: "vkCmdCopyImageToBuffer2",
2243
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2244
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2245
74
                proc: unsafe {
2246
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2247
74
                        Self::cmd_copy_image_to_buffer2,
2248
74
                    )
2249
74
                },
2250
74
            },
2251
74
            VulkanCommand {
2252
74
                name: "vkCmdCopyImageToBuffer2KHR",
2253
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2254
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyImageToBuffer2),
2255
74
                proc: unsafe {
2256
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyImageToBuffer2, vk::PFN_vkVoidFunction>(
2257
74
                        Self::cmd_copy_image_to_buffer2,
2258
74
                    )
2259
74
                },
2260
74
            },
2261
74
            VulkanCommand {
2262
74
                name: "vkCmdCopyMemoryIndirectNV",
2263
74
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2264
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryIndirectNv),
2265
74
                proc: unsafe {
2266
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyMemoryIndirectNV, vk::PFN_vkVoidFunction>(
2267
74
                        Self::cmd_copy_memory_indirect_nv,
2268
74
                    )
2269
74
                },
2270
74
            },
2271
74
            VulkanCommand {
2272
74
                name: "vkCmdCopyMemoryToAccelerationStructureKHR",
2273
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
2274
74
                hooked: hooked_commands
2275
74
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToAccelerationStructureKhr),
2276
74
                proc: unsafe {
2277
74
                    std::mem::transmute::<
2278
74
                        vk::PFN_vkCmdCopyMemoryToAccelerationStructureKHR,
2279
74
                        vk::PFN_vkVoidFunction,
2280
74
                    >(Self::cmd_copy_memory_to_acceleration_structure_khr)
2281
74
                },
2282
74
            },
2283
74
            VulkanCommand {
2284
74
                name: "vkCmdCopyMemoryToImageIndirectNV",
2285
74
                features: smallvec![
Feature::Extension(Extension::NVCopyMemoryIndirect)0
],
2286
74
                hooked: hooked_commands
2287
74
                    .contains(&LayerVulkanCommand::CmdCopyMemoryToImageIndirectNv),
2288
74
                proc: unsafe {
2289
74
                    std::mem::transmute::<
2290
74
                        vk::PFN_vkCmdCopyMemoryToImageIndirectNV,
2291
74
                        vk::PFN_vkVoidFunction,
2292
74
                    >(Self::cmd_copy_memory_to_image_indirect_nv)
2293
74
                },
2294
74
            },
2295
74
            VulkanCommand {
2296
74
                name: "vkCmdCopyMemoryToMicromapEXT",
2297
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2298
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMemoryToMicromapExt),
2299
74
                proc: unsafe {
2300
74
                    std::mem::transmute::<
2301
74
                        vk::PFN_vkCmdCopyMemoryToMicromapEXT,
2302
74
                        vk::PFN_vkVoidFunction,
2303
74
                    >(Self::cmd_copy_memory_to_micromap_ext)
2304
74
                },
2305
74
            },
2306
74
            VulkanCommand {
2307
74
                name: "vkCmdCopyMicromapEXT",
2308
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2309
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapExt),
2310
74
                proc: unsafe {
2311
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyMicromapEXT, vk::PFN_vkVoidFunction>(
2312
74
                        Self::cmd_copy_micromap_ext,
2313
74
                    )
2314
74
                },
2315
74
            },
2316
74
            VulkanCommand {
2317
74
                name: "vkCmdCopyMicromapToMemoryEXT",
2318
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
2319
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyMicromapToMemoryExt),
2320
74
                proc: unsafe {
2321
74
                    std::mem::transmute::<
2322
74
                        vk::PFN_vkCmdCopyMicromapToMemoryEXT,
2323
74
                        vk::PFN_vkVoidFunction,
2324
74
                    >(Self::cmd_copy_micromap_to_memory_ext)
2325
74
                },
2326
74
            },
2327
74
            VulkanCommand {
2328
74
                name: "vkCmdCopyQueryPoolResults",
2329
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2330
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCopyQueryPoolResults),
2331
74
                proc: unsafe {
2332
74
                    std::mem::transmute::<vk::PFN_vkCmdCopyQueryPoolResults, vk::PFN_vkVoidFunction>(
2333
74
                        Self::cmd_copy_query_pool_results,
2334
74
                    )
2335
74
                },
2336
74
            },
2337
74
            VulkanCommand {
2338
74
                name: "vkCmdCuLaunchKernelNVX",
2339
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
2340
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdCuLaunchKernelNvx),
2341
74
                proc: unsafe {
2342
74
                    std::mem::transmute::<vk::PFN_vkCmdCuLaunchKernelNVX, vk::PFN_vkVoidFunction>(
2343
74
                        Self::cmd_cu_launch_kernel_nvx,
2344
74
                    )
2345
74
                },
2346
74
            },
2347
74
            VulkanCommand {
2348
74
                name: "vkCmdDebugMarkerBeginEXT",
2349
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2350
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerBeginExt),
2351
74
                proc: unsafe {
2352
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerBeginEXT, vk::PFN_vkVoidFunction>(
2353
74
                        Self::cmd_debug_marker_begin_ext,
2354
74
                    )
2355
74
                },
2356
74
            },
2357
74
            VulkanCommand {
2358
74
                name: "vkCmdDebugMarkerEndEXT",
2359
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2360
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerEndExt),
2361
74
                proc: unsafe {
2362
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerEndEXT, vk::PFN_vkVoidFunction>(
2363
74
                        Self::cmd_debug_marker_end_ext,
2364
74
                    )
2365
74
                },
2366
74
            },
2367
74
            VulkanCommand {
2368
74
                name: "vkCmdDebugMarkerInsertEXT",
2369
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
2370
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDebugMarkerInsertExt),
2371
74
                proc: unsafe {
2372
74
                    std::mem::transmute::<vk::PFN_vkCmdDebugMarkerInsertEXT, vk::PFN_vkVoidFunction>(
2373
74
                        Self::cmd_debug_marker_insert_ext,
2374
74
                    )
2375
74
                },
2376
74
            },
2377
74
            VulkanCommand {
2378
74
                name: "vkCmdDecodeVideoKHR",
2379
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoDecodeQueue)0
],
2380
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecodeVideoKhr),
2381
74
                proc: unsafe {
2382
74
                    std::mem::transmute::<vk::PFN_vkCmdDecodeVideoKHR, vk::PFN_vkVoidFunction>(
2383
74
                        Self::cmd_decode_video_khr,
2384
74
                    )
2385
74
                },
2386
74
            },
2387
74
            VulkanCommand {
2388
74
                name: "vkCmdDecompressMemoryIndirectCountNV",
2389
74
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2390
74
                hooked: hooked_commands
2391
74
                    .contains(&LayerVulkanCommand::CmdDecompressMemoryIndirectCountNv),
2392
74
                proc: unsafe {
2393
74
                    std::mem::transmute::<
2394
74
                        vk::PFN_vkCmdDecompressMemoryIndirectCountNV,
2395
74
                        vk::PFN_vkVoidFunction,
2396
74
                    >(Self::cmd_decompress_memory_indirect_count_nv)
2397
74
                },
2398
74
            },
2399
74
            VulkanCommand {
2400
74
                name: "vkCmdDecompressMemoryNV",
2401
74
                features: smallvec![
Feature::Extension(Extension::NVMemoryDecompression)0
],
2402
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDecompressMemoryNv),
2403
74
                proc: unsafe {
2404
74
                    std::mem::transmute::<vk::PFN_vkCmdDecompressMemoryNV, vk::PFN_vkVoidFunction>(
2405
74
                        Self::cmd_decompress_memory_nv,
2406
74
                    )
2407
74
                },
2408
74
            },
2409
74
            VulkanCommand {
2410
74
                name: "vkCmdDispatch",
2411
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2412
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatch),
2413
74
                proc: unsafe {
2414
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatch, vk::PFN_vkVoidFunction>(
2415
74
                        Self::cmd_dispatch,
2416
74
                    )
2417
74
                },
2418
74
            },
2419
74
            VulkanCommand {
2420
74
                name: "vkCmdDispatchBase",
2421
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
2422
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2423
74
                proc: unsafe {
2424
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2425
74
                        Self::cmd_dispatch_base,
2426
74
                    )
2427
74
                },
2428
74
            },
2429
74
            VulkanCommand {
2430
74
                name: "vkCmdDispatchBaseKHR",
2431
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
2432
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchBase),
2433
74
                proc: unsafe {
2434
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchBase, vk::PFN_vkVoidFunction>(
2435
74
                        Self::cmd_dispatch_base,
2436
74
                    )
2437
74
                },
2438
74
            },
2439
74
            VulkanCommand {
2440
74
                name: "vkCmdDispatchIndirect",
2441
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2442
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDispatchIndirect),
2443
74
                proc: unsafe {
2444
74
                    std::mem::transmute::<vk::PFN_vkCmdDispatchIndirect, vk::PFN_vkVoidFunction>(
2445
74
                        Self::cmd_dispatch_indirect,
2446
74
                    )
2447
74
                },
2448
74
            },
2449
74
            VulkanCommand {
2450
74
                name: "vkCmdDraw",
2451
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2452
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDraw),
2453
74
                proc: unsafe {
2454
74
                    std::mem::transmute::<vk::PFN_vkCmdDraw, vk::PFN_vkVoidFunction>(Self::cmd_draw)
2455
74
                },
2456
74
            },
2457
74
            VulkanCommand {
2458
74
                name: "vkCmdDrawIndexed",
2459
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2460
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexed),
2461
74
                proc: unsafe {
2462
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexed, vk::PFN_vkVoidFunction>(
2463
74
                        Self::cmd_draw_indexed,
2464
74
                    )
2465
74
                },
2466
74
            },
2467
74
            VulkanCommand {
2468
74
                name: "vkCmdDrawIndexedIndirect",
2469
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2470
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirect),
2471
74
                proc: unsafe {
2472
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndexedIndirect, vk::PFN_vkVoidFunction>(
2473
74
                        Self::cmd_draw_indexed_indirect,
2474
74
                    )
2475
74
                },
2476
74
            },
2477
74
            VulkanCommand {
2478
74
                name: "vkCmdDrawIndexedIndirectCount",
2479
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2480
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2481
74
                proc: unsafe {
2482
74
                    std::mem::transmute::<
2483
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2484
74
                        vk::PFN_vkVoidFunction,
2485
74
                    >(Self::cmd_draw_indexed_indirect_count)
2486
74
                },
2487
74
            },
2488
74
            VulkanCommand {
2489
74
                name: "vkCmdDrawIndexedIndirectCountAMD",
2490
74
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2491
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2492
74
                proc: unsafe {
2493
74
                    std::mem::transmute::<
2494
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2495
74
                        vk::PFN_vkVoidFunction,
2496
74
                    >(Self::cmd_draw_indexed_indirect_count)
2497
74
                },
2498
74
            },
2499
74
            VulkanCommand {
2500
74
                name: "vkCmdDrawIndexedIndirectCountKHR",
2501
74
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2502
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndexedIndirectCount),
2503
74
                proc: unsafe {
2504
74
                    std::mem::transmute::<
2505
74
                        vk::PFN_vkCmdDrawIndexedIndirectCount,
2506
74
                        vk::PFN_vkVoidFunction,
2507
74
                    >(Self::cmd_draw_indexed_indirect_count)
2508
74
                },
2509
74
            },
2510
74
            VulkanCommand {
2511
74
                name: "vkCmdDrawIndirect",
2512
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2513
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirect),
2514
74
                proc: unsafe {
2515
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirect, vk::PFN_vkVoidFunction>(
2516
74
                        Self::cmd_draw_indirect,
2517
74
                    )
2518
74
                },
2519
74
            },
2520
74
            VulkanCommand {
2521
74
                name: "vkCmdDrawIndirectByteCountEXT",
2522
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2523
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectByteCountExt),
2524
74
                proc: unsafe {
2525
74
                    std::mem::transmute::<
2526
74
                        vk::PFN_vkCmdDrawIndirectByteCountEXT,
2527
74
                        vk::PFN_vkVoidFunction,
2528
74
                    >(Self::cmd_draw_indirect_byte_count_ext)
2529
74
                },
2530
74
            },
2531
74
            VulkanCommand {
2532
74
                name: "vkCmdDrawIndirectCount",
2533
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2534
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2535
74
                proc: unsafe {
2536
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2537
74
                        Self::cmd_draw_indirect_count,
2538
74
                    )
2539
74
                },
2540
74
            },
2541
74
            VulkanCommand {
2542
74
                name: "vkCmdDrawIndirectCountAMD",
2543
74
                features: smallvec![
Feature::Extension(Extension::AMDDrawIndirectCount)0
],
2544
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2545
74
                proc: unsafe {
2546
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2547
74
                        Self::cmd_draw_indirect_count,
2548
74
                    )
2549
74
                },
2550
74
            },
2551
74
            VulkanCommand {
2552
74
                name: "vkCmdDrawIndirectCountKHR",
2553
74
                features: smallvec![
Feature::Extension(Extension::KHRDrawIndirectCount)0
],
2554
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawIndirectCount),
2555
74
                proc: unsafe {
2556
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawIndirectCount, vk::PFN_vkVoidFunction>(
2557
74
                        Self::cmd_draw_indirect_count,
2558
74
                    )
2559
74
                },
2560
74
            },
2561
74
            VulkanCommand {
2562
74
                name: "vkCmdDrawMeshTasksEXT",
2563
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2564
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksExt),
2565
74
                proc: unsafe {
2566
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksEXT, vk::PFN_vkVoidFunction>(
2567
74
                        Self::cmd_draw_mesh_tasks_ext,
2568
74
                    )
2569
74
                },
2570
74
            },
2571
74
            VulkanCommand {
2572
74
                name: "vkCmdDrawMeshTasksIndirectCountEXT",
2573
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2574
74
                hooked: hooked_commands
2575
74
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountExt),
2576
74
                proc: unsafe {
2577
74
                    std::mem::transmute::<
2578
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountEXT,
2579
74
                        vk::PFN_vkVoidFunction,
2580
74
                    >(Self::cmd_draw_mesh_tasks_indirect_count_ext)
2581
74
                },
2582
74
            },
2583
74
            VulkanCommand {
2584
74
                name: "vkCmdDrawMeshTasksIndirectCountNV",
2585
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2586
74
                hooked: hooked_commands
2587
74
                    .contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectCountNv),
2588
74
                proc: unsafe {
2589
74
                    std::mem::transmute::<
2590
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectCountNV,
2591
74
                        vk::PFN_vkVoidFunction,
2592
74
                    >(Self::cmd_draw_mesh_tasks_indirect_count_nv)
2593
74
                },
2594
74
            },
2595
74
            VulkanCommand {
2596
74
                name: "vkCmdDrawMeshTasksIndirectEXT",
2597
74
                features: smallvec![
Feature::Extension(Extension::EXTMeshShader)0
],
2598
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectExt),
2599
74
                proc: unsafe {
2600
74
                    std::mem::transmute::<
2601
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectEXT,
2602
74
                        vk::PFN_vkVoidFunction,
2603
74
                    >(Self::cmd_draw_mesh_tasks_indirect_ext)
2604
74
                },
2605
74
            },
2606
74
            VulkanCommand {
2607
74
                name: "vkCmdDrawMeshTasksIndirectNV",
2608
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2609
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksIndirectNv),
2610
74
                proc: unsafe {
2611
74
                    std::mem::transmute::<
2612
74
                        vk::PFN_vkCmdDrawMeshTasksIndirectNV,
2613
74
                        vk::PFN_vkVoidFunction,
2614
74
                    >(Self::cmd_draw_mesh_tasks_indirect_nv)
2615
74
                },
2616
74
            },
2617
74
            VulkanCommand {
2618
74
                name: "vkCmdDrawMeshTasksNV",
2619
74
                features: smallvec![
Feature::Extension(Extension::NVMeshShader)0
],
2620
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMeshTasksNv),
2621
74
                proc: unsafe {
2622
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMeshTasksNV, vk::PFN_vkVoidFunction>(
2623
74
                        Self::cmd_draw_mesh_tasks_nv,
2624
74
                    )
2625
74
                },
2626
74
            },
2627
74
            VulkanCommand {
2628
74
                name: "vkCmdDrawMultiEXT",
2629
74
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2630
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiExt),
2631
74
                proc: unsafe {
2632
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiEXT, vk::PFN_vkVoidFunction>(
2633
74
                        Self::cmd_draw_multi_ext,
2634
74
                    )
2635
74
                },
2636
74
            },
2637
74
            VulkanCommand {
2638
74
                name: "vkCmdDrawMultiIndexedEXT",
2639
74
                features: smallvec![
Feature::Extension(Extension::EXTMultiDraw)0
],
2640
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdDrawMultiIndexedExt),
2641
74
                proc: unsafe {
2642
74
                    std::mem::transmute::<vk::PFN_vkCmdDrawMultiIndexedEXT, vk::PFN_vkVoidFunction>(
2643
74
                        Self::cmd_draw_multi_indexed_ext,
2644
74
                    )
2645
74
                },
2646
74
            },
2647
74
            VulkanCommand {
2648
74
                name: "vkCmdEncodeVideoKHR",
2649
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoEncodeQueue)0
],
2650
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEncodeVideoKhr),
2651
74
                proc: unsafe {
2652
74
                    std::mem::transmute::<vk::PFN_vkCmdEncodeVideoKHR, vk::PFN_vkVoidFunction>(
2653
74
                        Self::cmd_encode_video_khr,
2654
74
                    )
2655
74
                },
2656
74
            },
2657
74
            VulkanCommand {
2658
74
                name: "vkCmdEndConditionalRenderingEXT",
2659
74
                features: smallvec![
Feature::Extension(Extension::EXTConditionalRendering)0
],
2660
74
                hooked: hooked_commands
2661
74
                    .contains(&LayerVulkanCommand::CmdEndConditionalRenderingExt),
2662
74
                proc: unsafe {
2663
74
                    std::mem::transmute::<
2664
74
                        vk::PFN_vkCmdEndConditionalRenderingEXT,
2665
74
                        vk::PFN_vkVoidFunction,
2666
74
                    >(Self::cmd_end_conditional_rendering_ext)
2667
74
                },
2668
74
            },
2669
74
            VulkanCommand {
2670
74
                name: "vkCmdEndDebugUtilsLabelEXT",
2671
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2672
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndDebugUtilsLabelExt),
2673
74
                proc: unsafe {
2674
74
                    std::mem::transmute::<vk::PFN_vkCmdEndDebugUtilsLabelEXT, vk::PFN_vkVoidFunction>(
2675
74
                        Self::cmd_end_debug_utils_label_ext,
2676
74
                    )
2677
74
                },
2678
74
            },
2679
74
            VulkanCommand {
2680
74
                name: "vkCmdEndQuery",
2681
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2682
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQuery),
2683
74
                proc: unsafe {
2684
74
                    std::mem::transmute::<vk::PFN_vkCmdEndQuery, vk::PFN_vkVoidFunction>(
2685
74
                        Self::cmd_end_query,
2686
74
                    )
2687
74
                },
2688
74
            },
2689
74
            VulkanCommand {
2690
74
                name: "vkCmdEndQueryIndexedEXT",
2691
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2692
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndQueryIndexedExt),
2693
74
                proc: unsafe {
2694
74
                    std::mem::transmute::<vk::PFN_vkCmdEndQueryIndexedEXT, vk::PFN_vkVoidFunction>(
2695
74
                        Self::cmd_end_query_indexed_ext,
2696
74
                    )
2697
74
                },
2698
74
            },
2699
74
            VulkanCommand {
2700
74
                name: "vkCmdEndRenderPass",
2701
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2702
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass),
2703
74
                proc: unsafe {
2704
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass, vk::PFN_vkVoidFunction>(
2705
74
                        Self::cmd_end_render_pass,
2706
74
                    )
2707
74
                },
2708
74
            },
2709
74
            VulkanCommand {
2710
74
                name: "vkCmdEndRenderPass2",
2711
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2712
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2713
74
                proc: unsafe {
2714
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2715
74
                        Self::cmd_end_render_pass2,
2716
74
                    )
2717
74
                },
2718
74
            },
2719
74
            VulkanCommand {
2720
74
                name: "vkCmdEndRenderPass2KHR",
2721
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2722
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRenderPass2),
2723
74
                proc: unsafe {
2724
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRenderPass2, vk::PFN_vkVoidFunction>(
2725
74
                        Self::cmd_end_render_pass2,
2726
74
                    )
2727
74
                },
2728
74
            },
2729
74
            VulkanCommand {
2730
74
                name: "vkCmdEndRendering",
2731
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2732
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2733
74
                proc: unsafe {
2734
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2735
74
                        Self::cmd_end_rendering,
2736
74
                    )
2737
74
                },
2738
74
            },
2739
74
            VulkanCommand {
2740
74
                name: "vkCmdEndRenderingKHR",
2741
74
                features: smallvec![
Feature::Extension(Extension::KHRDynamicRendering)0
],
2742
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndRendering),
2743
74
                proc: unsafe {
2744
74
                    std::mem::transmute::<vk::PFN_vkCmdEndRendering, vk::PFN_vkVoidFunction>(
2745
74
                        Self::cmd_end_rendering,
2746
74
                    )
2747
74
                },
2748
74
            },
2749
74
            VulkanCommand {
2750
74
                name: "vkCmdEndTransformFeedbackEXT",
2751
74
                features: smallvec![
Feature::Extension(Extension::EXTTransformFeedback)0
],
2752
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndTransformFeedbackExt),
2753
74
                proc: unsafe {
2754
74
                    std::mem::transmute::<
2755
74
                        vk::PFN_vkCmdEndTransformFeedbackEXT,
2756
74
                        vk::PFN_vkVoidFunction,
2757
74
                    >(Self::cmd_end_transform_feedback_ext)
2758
74
                },
2759
74
            },
2760
74
            VulkanCommand {
2761
74
                name: "vkCmdEndVideoCodingKHR",
2762
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
2763
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdEndVideoCodingKhr),
2764
74
                proc: unsafe {
2765
74
                    std::mem::transmute::<vk::PFN_vkCmdEndVideoCodingKHR, vk::PFN_vkVoidFunction>(
2766
74
                        Self::cmd_end_video_coding_khr,
2767
74
                    )
2768
74
                },
2769
74
            },
2770
74
            VulkanCommand {
2771
74
                name: "vkCmdExecuteCommands",
2772
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2773
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdExecuteCommands),
2774
74
                proc: unsafe {
2775
74
                    std::mem::transmute::<vk::PFN_vkCmdExecuteCommands, vk::PFN_vkVoidFunction>(
2776
74
                        Self::cmd_execute_commands,
2777
74
                    )
2778
74
                },
2779
74
            },
2780
74
            VulkanCommand {
2781
74
                name: "vkCmdExecuteGeneratedCommandsNV",
2782
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2783
74
                hooked: hooked_commands
2784
74
                    .contains(&LayerVulkanCommand::CmdExecuteGeneratedCommandsNv),
2785
74
                proc: unsafe {
2786
74
                    std::mem::transmute::<
2787
74
                        vk::PFN_vkCmdExecuteGeneratedCommandsNV,
2788
74
                        vk::PFN_vkVoidFunction,
2789
74
                    >(Self::cmd_execute_generated_commands_nv)
2790
74
                },
2791
74
            },
2792
74
            VulkanCommand {
2793
74
                name: "vkCmdFillBuffer",
2794
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2795
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdFillBuffer),
2796
74
                proc: unsafe {
2797
74
                    std::mem::transmute::<vk::PFN_vkCmdFillBuffer, vk::PFN_vkVoidFunction>(
2798
74
                        Self::cmd_fill_buffer,
2799
74
                    )
2800
74
                },
2801
74
            },
2802
74
            VulkanCommand {
2803
74
                name: "vkCmdInsertDebugUtilsLabelEXT",
2804
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
2805
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdInsertDebugUtilsLabelExt),
2806
74
                proc: unsafe {
2807
74
                    std::mem::transmute::<
2808
74
                        vk::PFN_vkCmdInsertDebugUtilsLabelEXT,
2809
74
                        vk::PFN_vkVoidFunction,
2810
74
                    >(Self::cmd_insert_debug_utils_label_ext)
2811
74
                },
2812
74
            },
2813
74
            VulkanCommand {
2814
74
                name: "vkCmdNextSubpass",
2815
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2816
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass),
2817
74
                proc: unsafe {
2818
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass, vk::PFN_vkVoidFunction>(
2819
74
                        Self::cmd_next_subpass,
2820
74
                    )
2821
74
                },
2822
74
            },
2823
74
            VulkanCommand {
2824
74
                name: "vkCmdNextSubpass2",
2825
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
2826
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2827
74
                proc: unsafe {
2828
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2829
74
                        Self::cmd_next_subpass2,
2830
74
                    )
2831
74
                },
2832
74
            },
2833
74
            VulkanCommand {
2834
74
                name: "vkCmdNextSubpass2KHR",
2835
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
2836
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdNextSubpass2),
2837
74
                proc: unsafe {
2838
74
                    std::mem::transmute::<vk::PFN_vkCmdNextSubpass2, vk::PFN_vkVoidFunction>(
2839
74
                        Self::cmd_next_subpass2,
2840
74
                    )
2841
74
                },
2842
74
            },
2843
74
            VulkanCommand {
2844
74
                name: "vkCmdOpticalFlowExecuteNV",
2845
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
2846
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdOpticalFlowExecuteNv),
2847
74
                proc: unsafe {
2848
74
                    std::mem::transmute::<vk::PFN_vkCmdOpticalFlowExecuteNV, vk::PFN_vkVoidFunction>(
2849
74
                        Self::cmd_optical_flow_execute_nv,
2850
74
                    )
2851
74
                },
2852
74
            },
2853
74
            VulkanCommand {
2854
74
                name: "vkCmdPipelineBarrier",
2855
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2856
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier),
2857
74
                proc: unsafe {
2858
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier, vk::PFN_vkVoidFunction>(
2859
74
                        Self::cmd_pipeline_barrier,
2860
74
                    )
2861
74
                },
2862
74
            },
2863
74
            VulkanCommand {
2864
74
                name: "vkCmdPipelineBarrier2",
2865
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2866
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2867
74
                proc: unsafe {
2868
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2869
74
                        Self::cmd_pipeline_barrier2,
2870
74
                    )
2871
74
                },
2872
74
            },
2873
74
            VulkanCommand {
2874
74
                name: "vkCmdPipelineBarrier2KHR",
2875
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2876
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPipelineBarrier2),
2877
74
                proc: unsafe {
2878
74
                    std::mem::transmute::<vk::PFN_vkCmdPipelineBarrier2, vk::PFN_vkVoidFunction>(
2879
74
                        Self::cmd_pipeline_barrier2,
2880
74
                    )
2881
74
                },
2882
74
            },
2883
74
            VulkanCommand {
2884
74
                name: "vkCmdPreprocessGeneratedCommandsNV",
2885
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
2886
74
                hooked: hooked_commands
2887
74
                    .contains(&LayerVulkanCommand::CmdPreprocessGeneratedCommandsNv),
2888
74
                proc: unsafe {
2889
74
                    std::mem::transmute::<
2890
74
                        vk::PFN_vkCmdPreprocessGeneratedCommandsNV,
2891
74
                        vk::PFN_vkVoidFunction,
2892
74
                    >(Self::cmd_preprocess_generated_commands_nv)
2893
74
                },
2894
74
            },
2895
74
            VulkanCommand {
2896
74
                name: "vkCmdPushConstants",
2897
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushConstants),
2899
74
                proc: unsafe {
2900
74
                    std::mem::transmute::<vk::PFN_vkCmdPushConstants, vk::PFN_vkVoidFunction>(
2901
74
                        Self::cmd_push_constants,
2902
74
                    )
2903
74
                },
2904
74
            },
2905
74
            VulkanCommand {
2906
74
                name: "vkCmdPushDescriptorSetKHR",
2907
74
                features: smallvec![
Feature::Extension(Extension::KHRPushDescriptor)0
],
2908
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdPushDescriptorSetKhr),
2909
74
                proc: unsafe {
2910
74
                    std::mem::transmute::<vk::PFN_vkCmdPushDescriptorSetKHR, vk::PFN_vkVoidFunction>(
2911
74
                        Self::cmd_push_descriptor_set_khr,
2912
74
                    )
2913
74
                },
2914
74
            },
2915
74
            VulkanCommand {
2916
74
                name: "vkCmdPushDescriptorSetWithTemplateKHR",
2917
74
                features: smallvec![
2918
0
                    Feature::Extension(Extension::KHRPushDescriptor),
2919
0
                    Feature::Extension(Extension::KHRDescriptorUpdateTemplate)
2920
                ],
2921
74
                hooked: hooked_commands
2922
74
                    .contains(&LayerVulkanCommand::CmdPushDescriptorSetWithTemplateKhr),
2923
74
                proc: unsafe {
2924
74
                    std::mem::transmute::<
2925
74
                        vk::PFN_vkCmdPushDescriptorSetWithTemplateKHR,
2926
74
                        vk::PFN_vkVoidFunction,
2927
74
                    >(Self::cmd_push_descriptor_set_with_template_khr)
2928
74
                },
2929
74
            },
2930
74
            VulkanCommand {
2931
74
                name: "vkCmdResetEvent",
2932
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2933
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent),
2934
74
                proc: unsafe {
2935
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent, vk::PFN_vkVoidFunction>(
2936
74
                        Self::cmd_reset_event,
2937
74
                    )
2938
74
                },
2939
74
            },
2940
74
            VulkanCommand {
2941
74
                name: "vkCmdResetEvent2",
2942
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2943
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2944
74
                proc: unsafe {
2945
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2946
74
                        Self::cmd_reset_event2,
2947
74
                    )
2948
74
                },
2949
74
            },
2950
74
            VulkanCommand {
2951
74
                name: "vkCmdResetEvent2KHR",
2952
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
2953
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetEvent2),
2954
74
                proc: unsafe {
2955
74
                    std::mem::transmute::<vk::PFN_vkCmdResetEvent2, vk::PFN_vkVoidFunction>(
2956
74
                        Self::cmd_reset_event2,
2957
74
                    )
2958
74
                },
2959
74
            },
2960
74
            VulkanCommand {
2961
74
                name: "vkCmdResetQueryPool",
2962
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2963
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResetQueryPool),
2964
74
                proc: unsafe {
2965
74
                    std::mem::transmute::<vk::PFN_vkCmdResetQueryPool, vk::PFN_vkVoidFunction>(
2966
74
                        Self::cmd_reset_query_pool,
2967
74
                    )
2968
74
                },
2969
74
            },
2970
74
            VulkanCommand {
2971
74
                name: "vkCmdResolveImage",
2972
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
2973
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage),
2974
74
                proc: unsafe {
2975
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage, vk::PFN_vkVoidFunction>(
2976
74
                        Self::cmd_resolve_image,
2977
74
                    )
2978
74
                },
2979
74
            },
2980
74
            VulkanCommand {
2981
74
                name: "vkCmdResolveImage2",
2982
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
2983
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2984
74
                proc: unsafe {
2985
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2986
74
                        Self::cmd_resolve_image2,
2987
74
                    )
2988
74
                },
2989
74
            },
2990
74
            VulkanCommand {
2991
74
                name: "vkCmdResolveImage2KHR",
2992
74
                features: smallvec![
Feature::Extension(Extension::KHRCopyCommands2)0
],
2993
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdResolveImage2),
2994
74
                proc: unsafe {
2995
74
                    std::mem::transmute::<vk::PFN_vkCmdResolveImage2, vk::PFN_vkVoidFunction>(
2996
74
                        Self::cmd_resolve_image2,
2997
74
                    )
2998
74
                },
2999
74
            },
3000
74
            VulkanCommand {
3001
74
                name: "vkCmdSetAlphaToCoverageEnableEXT",
3002
74
                features: smallvec![
3003
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3004
0
                    Feature::Extension(Extension::EXTShaderObject)
3005
                ],
3006
74
                hooked: hooked_commands
3007
74
                    .contains(&LayerVulkanCommand::CmdSetAlphaToCoverageEnableExt),
3008
74
                proc: unsafe {
3009
74
                    std::mem::transmute::<
3010
74
                        vk::PFN_vkCmdSetAlphaToCoverageEnableEXT,
3011
74
                        vk::PFN_vkVoidFunction,
3012
74
                    >(Self::cmd_set_alpha_to_coverage_enable_ext)
3013
74
                },
3014
74
            },
3015
74
            VulkanCommand {
3016
74
                name: "vkCmdSetAlphaToOneEnableEXT",
3017
74
                features: smallvec![
3018
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3019
0
                    Feature::Extension(Extension::EXTShaderObject)
3020
                ],
3021
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetAlphaToOneEnableExt),
3022
74
                proc: unsafe {
3023
74
                    std::mem::transmute::<vk::PFN_vkCmdSetAlphaToOneEnableEXT, vk::PFN_vkVoidFunction>(
3024
74
                        Self::cmd_set_alpha_to_one_enable_ext,
3025
74
                    )
3026
74
                },
3027
74
            },
3028
74
            VulkanCommand {
3029
74
                name: "vkCmdSetBlendConstants",
3030
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3031
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetBlendConstants),
3032
74
                proc: unsafe {
3033
74
                    std::mem::transmute::<vk::PFN_vkCmdSetBlendConstants, vk::PFN_vkVoidFunction>(
3034
74
                        Self::cmd_set_blend_constants,
3035
74
                    )
3036
74
                },
3037
74
            },
3038
74
            VulkanCommand {
3039
74
                name: "vkCmdSetCheckpointNV",
3040
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
3041
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCheckpointNv),
3042
74
                proc: unsafe {
3043
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCheckpointNV, vk::PFN_vkVoidFunction>(
3044
74
                        Self::cmd_set_checkpoint_nv,
3045
74
                    )
3046
74
                },
3047
74
            },
3048
74
            VulkanCommand {
3049
74
                name: "vkCmdSetCoarseSampleOrderNV",
3050
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
3051
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCoarseSampleOrderNv),
3052
74
                proc: unsafe {
3053
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCoarseSampleOrderNV, vk::PFN_vkVoidFunction>(
3054
74
                        Self::cmd_set_coarse_sample_order_nv,
3055
74
                    )
3056
74
                },
3057
74
            },
3058
74
            VulkanCommand {
3059
74
                name: "vkCmdSetColorBlendAdvancedEXT",
3060
74
                features: smallvec![
3061
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3062
0
                    Feature::Extension(Extension::EXTShaderObject)
3063
                ],
3064
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendAdvancedExt),
3065
74
                proc: unsafe {
3066
74
                    std::mem::transmute::<
3067
74
                        vk::PFN_vkCmdSetColorBlendAdvancedEXT,
3068
74
                        vk::PFN_vkVoidFunction,
3069
74
                    >(Self::cmd_set_color_blend_advanced_ext)
3070
74
                },
3071
74
            },
3072
74
            VulkanCommand {
3073
74
                name: "vkCmdSetColorBlendEnableEXT",
3074
74
                features: smallvec![
3075
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3076
0
                    Feature::Extension(Extension::EXTShaderObject)
3077
                ],
3078
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEnableExt),
3079
74
                proc: unsafe {
3080
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorBlendEnableEXT, vk::PFN_vkVoidFunction>(
3081
74
                        Self::cmd_set_color_blend_enable_ext,
3082
74
                    )
3083
74
                },
3084
74
            },
3085
74
            VulkanCommand {
3086
74
                name: "vkCmdSetColorBlendEquationEXT",
3087
74
                features: smallvec![
3088
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3089
0
                    Feature::Extension(Extension::EXTShaderObject)
3090
                ],
3091
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorBlendEquationExt),
3092
74
                proc: unsafe {
3093
74
                    std::mem::transmute::<
3094
74
                        vk::PFN_vkCmdSetColorBlendEquationEXT,
3095
74
                        vk::PFN_vkVoidFunction,
3096
74
                    >(Self::cmd_set_color_blend_equation_ext)
3097
74
                },
3098
74
            },
3099
74
            VulkanCommand {
3100
74
                name: "vkCmdSetColorWriteEnableEXT",
3101
74
                features: smallvec![
Feature::Extension(Extension::EXTColorWriteEnable)0
],
3102
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteEnableExt),
3103
74
                proc: unsafe {
3104
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteEnableEXT, vk::PFN_vkVoidFunction>(
3105
74
                        Self::cmd_set_color_write_enable_ext,
3106
74
                    )
3107
74
                },
3108
74
            },
3109
74
            VulkanCommand {
3110
74
                name: "vkCmdSetColorWriteMaskEXT",
3111
74
                features: smallvec![
3112
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3113
0
                    Feature::Extension(Extension::EXTShaderObject)
3114
                ],
3115
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetColorWriteMaskExt),
3116
74
                proc: unsafe {
3117
74
                    std::mem::transmute::<vk::PFN_vkCmdSetColorWriteMaskEXT, vk::PFN_vkVoidFunction>(
3118
74
                        Self::cmd_set_color_write_mask_ext,
3119
74
                    )
3120
74
                },
3121
74
            },
3122
74
            VulkanCommand {
3123
74
                name: "vkCmdSetConservativeRasterizationModeEXT",
3124
74
                features: smallvec![
3125
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3126
0
                    Feature::Extension(Extension::EXTShaderObject)
3127
                ],
3128
74
                hooked: hooked_commands
3129
74
                    .contains(&LayerVulkanCommand::CmdSetConservativeRasterizationModeExt),
3130
74
                proc: unsafe {
3131
74
                    std::mem::transmute::<
3132
74
                        vk::PFN_vkCmdSetConservativeRasterizationModeEXT,
3133
74
                        vk::PFN_vkVoidFunction,
3134
74
                    >(Self::cmd_set_conservative_rasterization_mode_ext)
3135
74
                },
3136
74
            },
3137
74
            VulkanCommand {
3138
74
                name: "vkCmdSetCoverageModulationModeNV",
3139
74
                features: smallvec![
3140
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3141
0
                    Feature::Extension(Extension::EXTShaderObject)
3142
                ],
3143
74
                hooked: hooked_commands
3144
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationModeNv),
3145
74
                proc: unsafe {
3146
74
                    std::mem::transmute::<
3147
74
                        vk::PFN_vkCmdSetCoverageModulationModeNV,
3148
74
                        vk::PFN_vkVoidFunction,
3149
74
                    >(Self::cmd_set_coverage_modulation_mode_nv)
3150
74
                },
3151
74
            },
3152
74
            VulkanCommand {
3153
74
                name: "vkCmdSetCoverageModulationTableEnableNV",
3154
74
                features: smallvec![
3155
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3156
0
                    Feature::Extension(Extension::EXTShaderObject)
3157
                ],
3158
74
                hooked: hooked_commands
3159
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableEnableNv),
3160
74
                proc: unsafe {
3161
74
                    std::mem::transmute::<
3162
74
                        vk::PFN_vkCmdSetCoverageModulationTableEnableNV,
3163
74
                        vk::PFN_vkVoidFunction,
3164
74
                    >(Self::cmd_set_coverage_modulation_table_enable_nv)
3165
74
                },
3166
74
            },
3167
74
            VulkanCommand {
3168
74
                name: "vkCmdSetCoverageModulationTableNV",
3169
74
                features: smallvec![
3170
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3171
0
                    Feature::Extension(Extension::EXTShaderObject)
3172
                ],
3173
74
                hooked: hooked_commands
3174
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageModulationTableNv),
3175
74
                proc: unsafe {
3176
74
                    std::mem::transmute::<
3177
74
                        vk::PFN_vkCmdSetCoverageModulationTableNV,
3178
74
                        vk::PFN_vkVoidFunction,
3179
74
                    >(Self::cmd_set_coverage_modulation_table_nv)
3180
74
                },
3181
74
            },
3182
74
            VulkanCommand {
3183
74
                name: "vkCmdSetCoverageReductionModeNV",
3184
74
                features: smallvec![
3185
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3186
0
                    Feature::Extension(Extension::EXTShaderObject)
3187
                ],
3188
74
                hooked: hooked_commands
3189
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageReductionModeNv),
3190
74
                proc: unsafe {
3191
74
                    std::mem::transmute::<
3192
74
                        vk::PFN_vkCmdSetCoverageReductionModeNV,
3193
74
                        vk::PFN_vkVoidFunction,
3194
74
                    >(Self::cmd_set_coverage_reduction_mode_nv)
3195
74
                },
3196
74
            },
3197
74
            VulkanCommand {
3198
74
                name: "vkCmdSetCoverageToColorEnableNV",
3199
74
                features: smallvec![
3200
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3201
0
                    Feature::Extension(Extension::EXTShaderObject)
3202
                ],
3203
74
                hooked: hooked_commands
3204
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorEnableNv),
3205
74
                proc: unsafe {
3206
74
                    std::mem::transmute::<
3207
74
                        vk::PFN_vkCmdSetCoverageToColorEnableNV,
3208
74
                        vk::PFN_vkVoidFunction,
3209
74
                    >(Self::cmd_set_coverage_to_color_enable_nv)
3210
74
                },
3211
74
            },
3212
74
            VulkanCommand {
3213
74
                name: "vkCmdSetCoverageToColorLocationNV",
3214
74
                features: smallvec![
3215
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3216
0
                    Feature::Extension(Extension::EXTShaderObject)
3217
                ],
3218
74
                hooked: hooked_commands
3219
74
                    .contains(&LayerVulkanCommand::CmdSetCoverageToColorLocationNv),
3220
74
                proc: unsafe {
3221
74
                    std::mem::transmute::<
3222
74
                        vk::PFN_vkCmdSetCoverageToColorLocationNV,
3223
74
                        vk::PFN_vkVoidFunction,
3224
74
                    >(Self::cmd_set_coverage_to_color_location_nv)
3225
74
                },
3226
74
            },
3227
74
            VulkanCommand {
3228
74
                name: "vkCmdSetCullMode",
3229
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3230
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3231
74
                proc: unsafe {
3232
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3233
74
                        Self::cmd_set_cull_mode,
3234
74
                    )
3235
74
                },
3236
74
            },
3237
74
            VulkanCommand {
3238
74
                name: "vkCmdSetCullModeEXT",
3239
74
                features: smallvec![
3240
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3241
0
                    Feature::Extension(Extension::EXTShaderObject)
3242
                ],
3243
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetCullMode),
3244
74
                proc: unsafe {
3245
74
                    std::mem::transmute::<vk::PFN_vkCmdSetCullMode, vk::PFN_vkVoidFunction>(
3246
74
                        Self::cmd_set_cull_mode,
3247
74
                    )
3248
74
                },
3249
74
            },
3250
74
            VulkanCommand {
3251
74
                name: "vkCmdSetDepthBias",
3252
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3253
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBias),
3254
74
                proc: unsafe {
3255
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBias, vk::PFN_vkVoidFunction>(
3256
74
                        Self::cmd_set_depth_bias,
3257
74
                    )
3258
74
                },
3259
74
            },
3260
74
            VulkanCommand {
3261
74
                name: "vkCmdSetDepthBiasEnable",
3262
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3263
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3264
74
                proc: unsafe {
3265
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3266
74
                        Self::cmd_set_depth_bias_enable,
3267
74
                    )
3268
74
                },
3269
74
            },
3270
74
            VulkanCommand {
3271
74
                name: "vkCmdSetDepthBiasEnableEXT",
3272
74
                features: smallvec![
3273
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3274
0
                    Feature::Extension(Extension::EXTShaderObject)
3275
                ],
3276
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBiasEnable),
3277
74
                proc: unsafe {
3278
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBiasEnable, vk::PFN_vkVoidFunction>(
3279
74
                        Self::cmd_set_depth_bias_enable,
3280
74
                    )
3281
74
                },
3282
74
            },
3283
74
            VulkanCommand {
3284
74
                name: "vkCmdSetDepthBounds",
3285
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3286
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBounds),
3287
74
                proc: unsafe {
3288
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthBounds, vk::PFN_vkVoidFunction>(
3289
74
                        Self::cmd_set_depth_bounds,
3290
74
                    )
3291
74
                },
3292
74
            },
3293
74
            VulkanCommand {
3294
74
                name: "vkCmdSetDepthBoundsTestEnable",
3295
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3296
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3297
74
                proc: unsafe {
3298
74
                    std::mem::transmute::<
3299
74
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3300
74
                        vk::PFN_vkVoidFunction,
3301
74
                    >(Self::cmd_set_depth_bounds_test_enable)
3302
74
                },
3303
74
            },
3304
74
            VulkanCommand {
3305
74
                name: "vkCmdSetDepthBoundsTestEnableEXT",
3306
74
                features: smallvec![
3307
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3308
0
                    Feature::Extension(Extension::EXTShaderObject)
3309
                ],
3310
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthBoundsTestEnable),
3311
74
                proc: unsafe {
3312
74
                    std::mem::transmute::<
3313
74
                        vk::PFN_vkCmdSetDepthBoundsTestEnable,
3314
74
                        vk::PFN_vkVoidFunction,
3315
74
                    >(Self::cmd_set_depth_bounds_test_enable)
3316
74
                },
3317
74
            },
3318
74
            VulkanCommand {
3319
74
                name: "vkCmdSetDepthClampEnableEXT",
3320
74
                features: smallvec![
3321
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3322
0
                    Feature::Extension(Extension::EXTShaderObject)
3323
                ],
3324
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClampEnableExt),
3325
74
                proc: unsafe {
3326
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClampEnableEXT, vk::PFN_vkVoidFunction>(
3327
74
                        Self::cmd_set_depth_clamp_enable_ext,
3328
74
                    )
3329
74
                },
3330
74
            },
3331
74
            VulkanCommand {
3332
74
                name: "vkCmdSetDepthClipEnableEXT",
3333
74
                features: smallvec![
3334
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3335
0
                    Feature::Extension(Extension::EXTShaderObject)
3336
                ],
3337
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthClipEnableExt),
3338
74
                proc: unsafe {
3339
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthClipEnableEXT, vk::PFN_vkVoidFunction>(
3340
74
                        Self::cmd_set_depth_clip_enable_ext,
3341
74
                    )
3342
74
                },
3343
74
            },
3344
74
            VulkanCommand {
3345
74
                name: "vkCmdSetDepthClipNegativeOneToOneEXT",
3346
74
                features: smallvec![
3347
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3348
0
                    Feature::Extension(Extension::EXTShaderObject)
3349
                ],
3350
74
                hooked: hooked_commands
3351
74
                    .contains(&LayerVulkanCommand::CmdSetDepthClipNegativeOneToOneExt),
3352
74
                proc: unsafe {
3353
74
                    std::mem::transmute::<
3354
74
                        vk::PFN_vkCmdSetDepthClipNegativeOneToOneEXT,
3355
74
                        vk::PFN_vkVoidFunction,
3356
74
                    >(Self::cmd_set_depth_clip_negative_one_to_one_ext)
3357
74
                },
3358
74
            },
3359
74
            VulkanCommand {
3360
74
                name: "vkCmdSetDepthCompareOp",
3361
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3362
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3363
74
                proc: unsafe {
3364
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3365
74
                        Self::cmd_set_depth_compare_op,
3366
74
                    )
3367
74
                },
3368
74
            },
3369
74
            VulkanCommand {
3370
74
                name: "vkCmdSetDepthCompareOpEXT",
3371
74
                features: smallvec![
3372
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3373
0
                    Feature::Extension(Extension::EXTShaderObject)
3374
                ],
3375
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthCompareOp),
3376
74
                proc: unsafe {
3377
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthCompareOp, vk::PFN_vkVoidFunction>(
3378
74
                        Self::cmd_set_depth_compare_op,
3379
74
                    )
3380
74
                },
3381
74
            },
3382
74
            VulkanCommand {
3383
74
                name: "vkCmdSetDepthTestEnable",
3384
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3385
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3386
74
                proc: unsafe {
3387
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3388
74
                        Self::cmd_set_depth_test_enable,
3389
74
                    )
3390
74
                },
3391
74
            },
3392
74
            VulkanCommand {
3393
74
                name: "vkCmdSetDepthTestEnableEXT",
3394
74
                features: smallvec![
3395
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3396
0
                    Feature::Extension(Extension::EXTShaderObject)
3397
                ],
3398
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthTestEnable),
3399
74
                proc: unsafe {
3400
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthTestEnable, vk::PFN_vkVoidFunction>(
3401
74
                        Self::cmd_set_depth_test_enable,
3402
74
                    )
3403
74
                },
3404
74
            },
3405
74
            VulkanCommand {
3406
74
                name: "vkCmdSetDepthWriteEnable",
3407
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3408
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3409
74
                proc: unsafe {
3410
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3411
74
                        Self::cmd_set_depth_write_enable,
3412
74
                    )
3413
74
                },
3414
74
            },
3415
74
            VulkanCommand {
3416
74
                name: "vkCmdSetDepthWriteEnableEXT",
3417
74
                features: smallvec![
3418
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3419
0
                    Feature::Extension(Extension::EXTShaderObject)
3420
                ],
3421
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDepthWriteEnable),
3422
74
                proc: unsafe {
3423
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDepthWriteEnable, vk::PFN_vkVoidFunction>(
3424
74
                        Self::cmd_set_depth_write_enable,
3425
74
                    )
3426
74
                },
3427
74
            },
3428
74
            VulkanCommand {
3429
74
                name: "vkCmdSetDescriptorBufferOffsetsEXT",
3430
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
3431
74
                hooked: hooked_commands
3432
74
                    .contains(&LayerVulkanCommand::CmdSetDescriptorBufferOffsetsExt),
3433
74
                proc: unsafe {
3434
74
                    std::mem::transmute::<
3435
74
                        vk::PFN_vkCmdSetDescriptorBufferOffsetsEXT,
3436
74
                        vk::PFN_vkVoidFunction,
3437
74
                    >(Self::cmd_set_descriptor_buffer_offsets_ext)
3438
74
                },
3439
74
            },
3440
74
            VulkanCommand {
3441
74
                name: "vkCmdSetDeviceMask",
3442
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
3443
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3444
74
                proc: unsafe {
3445
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3446
74
                        Self::cmd_set_device_mask,
3447
74
                    )
3448
74
                },
3449
74
            },
3450
74
            VulkanCommand {
3451
74
                name: "vkCmdSetDeviceMaskKHR",
3452
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
3453
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDeviceMask),
3454
74
                proc: unsafe {
3455
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDeviceMask, vk::PFN_vkVoidFunction>(
3456
74
                        Self::cmd_set_device_mask,
3457
74
                    )
3458
74
                },
3459
74
            },
3460
74
            VulkanCommand {
3461
74
                name: "vkCmdSetDiscardRectangleEXT",
3462
74
                features: smallvec![
Feature::Extension(Extension::EXTDiscardRectangles)0
],
3463
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetDiscardRectangleExt),
3464
74
                proc: unsafe {
3465
74
                    std::mem::transmute::<vk::PFN_vkCmdSetDiscardRectangleEXT, vk::PFN_vkVoidFunction>(
3466
74
                        Self::cmd_set_discard_rectangle_ext,
3467
74
                    )
3468
74
                },
3469
74
            },
3470
74
            VulkanCommand {
3471
74
                name: "vkCmdSetEvent",
3472
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3473
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent),
3474
74
                proc: unsafe {
3475
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent, vk::PFN_vkVoidFunction>(
3476
74
                        Self::cmd_set_event,
3477
74
                    )
3478
74
                },
3479
74
            },
3480
74
            VulkanCommand {
3481
74
                name: "vkCmdSetEvent2",
3482
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3483
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3484
74
                proc: unsafe {
3485
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3486
74
                        Self::cmd_set_event2,
3487
74
                    )
3488
74
                },
3489
74
            },
3490
74
            VulkanCommand {
3491
74
                name: "vkCmdSetEvent2KHR",
3492
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
3493
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetEvent2),
3494
74
                proc: unsafe {
3495
74
                    std::mem::transmute::<vk::PFN_vkCmdSetEvent2, vk::PFN_vkVoidFunction>(
3496
74
                        Self::cmd_set_event2,
3497
74
                    )
3498
74
                },
3499
74
            },
3500
74
            VulkanCommand {
3501
74
                name: "vkCmdSetExclusiveScissorNV",
3502
74
                features: smallvec![
Feature::Extension(Extension::NVScissorExclusive)0
],
3503
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetExclusiveScissorNv),
3504
74
                proc: unsafe {
3505
74
                    std::mem::transmute::<vk::PFN_vkCmdSetExclusiveScissorNV, vk::PFN_vkVoidFunction>(
3506
74
                        Self::cmd_set_exclusive_scissor_nv,
3507
74
                    )
3508
74
                },
3509
74
            },
3510
74
            VulkanCommand {
3511
74
                name: "vkCmdSetExtraPrimitiveOverestimationSizeEXT",
3512
74
                features: smallvec![
3513
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3514
0
                    Feature::Extension(Extension::EXTShaderObject)
3515
                ],
3516
74
                hooked: hooked_commands
3517
74
                    .contains(&LayerVulkanCommand::CmdSetExtraPrimitiveOverestimationSizeExt),
3518
74
                proc: unsafe {
3519
74
                    std::mem::transmute::<
3520
74
                        vk::PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT,
3521
74
                        vk::PFN_vkVoidFunction,
3522
74
                    >(Self::cmd_set_extra_primitive_overestimation_size_ext)
3523
74
                },
3524
74
            },
3525
74
            VulkanCommand {
3526
74
                name: "vkCmdSetFragmentShadingRateEnumNV",
3527
74
                features: smallvec![
Feature::Extension(Extension::NVFragmentShadingRateEnums)0
],
3528
74
                hooked: hooked_commands
3529
74
                    .contains(&LayerVulkanCommand::CmdSetFragmentShadingRateEnumNv),
3530
74
                proc: unsafe {
3531
74
                    std::mem::transmute::<
3532
74
                        vk::PFN_vkCmdSetFragmentShadingRateEnumNV,
3533
74
                        vk::PFN_vkVoidFunction,
3534
74
                    >(Self::cmd_set_fragment_shading_rate_enum_nv)
3535
74
                },
3536
74
            },
3537
74
            VulkanCommand {
3538
74
                name: "vkCmdSetFragmentShadingRateKHR",
3539
74
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
3540
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFragmentShadingRateKhr),
3541
74
                proc: unsafe {
3542
74
                    std::mem::transmute::<
3543
74
                        vk::PFN_vkCmdSetFragmentShadingRateKHR,
3544
74
                        vk::PFN_vkVoidFunction,
3545
74
                    >(Self::cmd_set_fragment_shading_rate_khr)
3546
74
                },
3547
74
            },
3548
74
            VulkanCommand {
3549
74
                name: "vkCmdSetFrontFace",
3550
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3551
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3552
74
                proc: unsafe {
3553
74
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3554
74
                        Self::cmd_set_front_face,
3555
74
                    )
3556
74
                },
3557
74
            },
3558
74
            VulkanCommand {
3559
74
                name: "vkCmdSetFrontFaceEXT",
3560
74
                features: smallvec![
3561
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3562
0
                    Feature::Extension(Extension::EXTShaderObject)
3563
                ],
3564
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetFrontFace),
3565
74
                proc: unsafe {
3566
74
                    std::mem::transmute::<vk::PFN_vkCmdSetFrontFace, vk::PFN_vkVoidFunction>(
3567
74
                        Self::cmd_set_front_face,
3568
74
                    )
3569
74
                },
3570
74
            },
3571
74
            VulkanCommand {
3572
74
                name: "vkCmdSetLineRasterizationModeEXT",
3573
74
                features: smallvec![
3574
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3575
0
                    Feature::Extension(Extension::EXTShaderObject)
3576
                ],
3577
74
                hooked: hooked_commands
3578
74
                    .contains(&LayerVulkanCommand::CmdSetLineRasterizationModeExt),
3579
74
                proc: unsafe {
3580
74
                    std::mem::transmute::<
3581
74
                        vk::PFN_vkCmdSetLineRasterizationModeEXT,
3582
74
                        vk::PFN_vkVoidFunction,
3583
74
                    >(Self::cmd_set_line_rasterization_mode_ext)
3584
74
                },
3585
74
            },
3586
74
            VulkanCommand {
3587
74
                name: "vkCmdSetLineStippleEXT",
3588
74
                features: smallvec![
Feature::Extension(Extension::EXTLineRasterization)0
],
3589
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleExt),
3590
74
                proc: unsafe {
3591
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLineStippleEXT, vk::PFN_vkVoidFunction>(
3592
74
                        Self::cmd_set_line_stipple_ext,
3593
74
                    )
3594
74
                },
3595
74
            },
3596
74
            VulkanCommand {
3597
74
                name: "vkCmdSetLineStippleEnableEXT",
3598
74
                features: smallvec![
3599
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3600
0
                    Feature::Extension(Extension::EXTShaderObject)
3601
                ],
3602
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineStippleEnableExt),
3603
74
                proc: unsafe {
3604
74
                    std::mem::transmute::<
3605
74
                        vk::PFN_vkCmdSetLineStippleEnableEXT,
3606
74
                        vk::PFN_vkVoidFunction,
3607
74
                    >(Self::cmd_set_line_stipple_enable_ext)
3608
74
                },
3609
74
            },
3610
74
            VulkanCommand {
3611
74
                name: "vkCmdSetLineWidth",
3612
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3613
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLineWidth),
3614
74
                proc: unsafe {
3615
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLineWidth, vk::PFN_vkVoidFunction>(
3616
74
                        Self::cmd_set_line_width,
3617
74
                    )
3618
74
                },
3619
74
            },
3620
74
            VulkanCommand {
3621
74
                name: "vkCmdSetLogicOpEXT",
3622
74
                features: smallvec![
3623
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3624
0
                    Feature::Extension(Extension::EXTShaderObject)
3625
                ],
3626
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpExt),
3627
74
                proc: unsafe {
3628
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEXT, vk::PFN_vkVoidFunction>(
3629
74
                        Self::cmd_set_logic_op_ext,
3630
74
                    )
3631
74
                },
3632
74
            },
3633
74
            VulkanCommand {
3634
74
                name: "vkCmdSetLogicOpEnableEXT",
3635
74
                features: smallvec![
3636
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3637
0
                    Feature::Extension(Extension::EXTShaderObject)
3638
                ],
3639
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetLogicOpEnableExt),
3640
74
                proc: unsafe {
3641
74
                    std::mem::transmute::<vk::PFN_vkCmdSetLogicOpEnableEXT, vk::PFN_vkVoidFunction>(
3642
74
                        Self::cmd_set_logic_op_enable_ext,
3643
74
                    )
3644
74
                },
3645
74
            },
3646
74
            VulkanCommand {
3647
74
                name: "vkCmdSetPatchControlPointsEXT",
3648
74
                features: smallvec![
3649
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3650
0
                    Feature::Extension(Extension::EXTShaderObject)
3651
                ],
3652
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPatchControlPointsExt),
3653
74
                proc: unsafe {
3654
74
                    std::mem::transmute::<
3655
74
                        vk::PFN_vkCmdSetPatchControlPointsEXT,
3656
74
                        vk::PFN_vkVoidFunction,
3657
74
                    >(Self::cmd_set_patch_control_points_ext)
3658
74
                },
3659
74
            },
3660
74
            VulkanCommand {
3661
74
                name: "vkCmdSetPerformanceMarkerINTEL",
3662
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3663
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPerformanceMarkerIntel),
3664
74
                proc: unsafe {
3665
74
                    std::mem::transmute::<
3666
74
                        vk::PFN_vkCmdSetPerformanceMarkerINTEL,
3667
74
                        vk::PFN_vkVoidFunction,
3668
74
                    >(Self::cmd_set_performance_marker_intel)
3669
74
                },
3670
74
            },
3671
74
            VulkanCommand {
3672
74
                name: "vkCmdSetPerformanceOverrideINTEL",
3673
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3674
74
                hooked: hooked_commands
3675
74
                    .contains(&LayerVulkanCommand::CmdSetPerformanceOverrideIntel),
3676
74
                proc: unsafe {
3677
74
                    std::mem::transmute::<
3678
74
                        vk::PFN_vkCmdSetPerformanceOverrideINTEL,
3679
74
                        vk::PFN_vkVoidFunction,
3680
74
                    >(Self::cmd_set_performance_override_intel)
3681
74
                },
3682
74
            },
3683
74
            VulkanCommand {
3684
74
                name: "vkCmdSetPerformanceStreamMarkerINTEL",
3685
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
3686
74
                hooked: hooked_commands
3687
74
                    .contains(&LayerVulkanCommand::CmdSetPerformanceStreamMarkerIntel),
3688
74
                proc: unsafe {
3689
74
                    std::mem::transmute::<
3690
74
                        vk::PFN_vkCmdSetPerformanceStreamMarkerINTEL,
3691
74
                        vk::PFN_vkVoidFunction,
3692
74
                    >(Self::cmd_set_performance_stream_marker_intel)
3693
74
                },
3694
74
            },
3695
74
            VulkanCommand {
3696
74
                name: "vkCmdSetPolygonModeEXT",
3697
74
                features: smallvec![
3698
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3699
0
                    Feature::Extension(Extension::EXTShaderObject)
3700
                ],
3701
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPolygonModeExt),
3702
74
                proc: unsafe {
3703
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPolygonModeEXT, vk::PFN_vkVoidFunction>(
3704
74
                        Self::cmd_set_polygon_mode_ext,
3705
74
                    )
3706
74
                },
3707
74
            },
3708
74
            VulkanCommand {
3709
74
                name: "vkCmdSetPrimitiveRestartEnable",
3710
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3711
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3712
74
                proc: unsafe {
3713
74
                    std::mem::transmute::<
3714
74
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3715
74
                        vk::PFN_vkVoidFunction,
3716
74
                    >(Self::cmd_set_primitive_restart_enable)
3717
74
                },
3718
74
            },
3719
74
            VulkanCommand {
3720
74
                name: "vkCmdSetPrimitiveRestartEnableEXT",
3721
74
                features: smallvec![
3722
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3723
0
                    Feature::Extension(Extension::EXTShaderObject)
3724
                ],
3725
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveRestartEnable),
3726
74
                proc: unsafe {
3727
74
                    std::mem::transmute::<
3728
74
                        vk::PFN_vkCmdSetPrimitiveRestartEnable,
3729
74
                        vk::PFN_vkVoidFunction,
3730
74
                    >(Self::cmd_set_primitive_restart_enable)
3731
74
                },
3732
74
            },
3733
74
            VulkanCommand {
3734
74
                name: "vkCmdSetPrimitiveTopology",
3735
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3736
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3737
74
                proc: unsafe {
3738
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3739
74
                        Self::cmd_set_primitive_topology,
3740
74
                    )
3741
74
                },
3742
74
            },
3743
74
            VulkanCommand {
3744
74
                name: "vkCmdSetPrimitiveTopologyEXT",
3745
74
                features: smallvec![
3746
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3747
0
                    Feature::Extension(Extension::EXTShaderObject)
3748
                ],
3749
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetPrimitiveTopology),
3750
74
                proc: unsafe {
3751
74
                    std::mem::transmute::<vk::PFN_vkCmdSetPrimitiveTopology, vk::PFN_vkVoidFunction>(
3752
74
                        Self::cmd_set_primitive_topology,
3753
74
                    )
3754
74
                },
3755
74
            },
3756
74
            VulkanCommand {
3757
74
                name: "vkCmdSetProvokingVertexModeEXT",
3758
74
                features: smallvec![
3759
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3760
0
                    Feature::Extension(Extension::EXTShaderObject)
3761
                ],
3762
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetProvokingVertexModeExt),
3763
74
                proc: unsafe {
3764
74
                    std::mem::transmute::<
3765
74
                        vk::PFN_vkCmdSetProvokingVertexModeEXT,
3766
74
                        vk::PFN_vkVoidFunction,
3767
74
                    >(Self::cmd_set_provoking_vertex_mode_ext)
3768
74
                },
3769
74
            },
3770
74
            VulkanCommand {
3771
74
                name: "vkCmdSetRasterizationSamplesEXT",
3772
74
                features: smallvec![
3773
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3774
0
                    Feature::Extension(Extension::EXTShaderObject)
3775
                ],
3776
74
                hooked: hooked_commands
3777
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizationSamplesExt),
3778
74
                proc: unsafe {
3779
74
                    std::mem::transmute::<
3780
74
                        vk::PFN_vkCmdSetRasterizationSamplesEXT,
3781
74
                        vk::PFN_vkVoidFunction,
3782
74
                    >(Self::cmd_set_rasterization_samples_ext)
3783
74
                },
3784
74
            },
3785
74
            VulkanCommand {
3786
74
                name: "vkCmdSetRasterizationStreamEXT",
3787
74
                features: smallvec![
3788
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3789
0
                    Feature::Extension(Extension::EXTShaderObject)
3790
                ],
3791
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetRasterizationStreamExt),
3792
74
                proc: unsafe {
3793
74
                    std::mem::transmute::<
3794
74
                        vk::PFN_vkCmdSetRasterizationStreamEXT,
3795
74
                        vk::PFN_vkVoidFunction,
3796
74
                    >(Self::cmd_set_rasterization_stream_ext)
3797
74
                },
3798
74
            },
3799
74
            VulkanCommand {
3800
74
                name: "vkCmdSetRasterizerDiscardEnable",
3801
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3802
74
                hooked: hooked_commands
3803
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3804
74
                proc: unsafe {
3805
74
                    std::mem::transmute::<
3806
74
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3807
74
                        vk::PFN_vkVoidFunction,
3808
74
                    >(Self::cmd_set_rasterizer_discard_enable)
3809
74
                },
3810
74
            },
3811
74
            VulkanCommand {
3812
74
                name: "vkCmdSetRasterizerDiscardEnableEXT",
3813
74
                features: smallvec![
3814
0
                    Feature::Extension(Extension::EXTExtendedDynamicState2),
3815
0
                    Feature::Extension(Extension::EXTShaderObject)
3816
                ],
3817
74
                hooked: hooked_commands
3818
74
                    .contains(&LayerVulkanCommand::CmdSetRasterizerDiscardEnable),
3819
74
                proc: unsafe {
3820
74
                    std::mem::transmute::<
3821
74
                        vk::PFN_vkCmdSetRasterizerDiscardEnable,
3822
74
                        vk::PFN_vkVoidFunction,
3823
74
                    >(Self::cmd_set_rasterizer_discard_enable)
3824
74
                },
3825
74
            },
3826
74
            VulkanCommand {
3827
74
                name: "vkCmdSetRayTracingPipelineStackSizeKHR",
3828
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
3829
74
                hooked: hooked_commands
3830
74
                    .contains(&LayerVulkanCommand::CmdSetRayTracingPipelineStackSizeKhr),
3831
74
                proc: unsafe {
3832
74
                    std::mem::transmute::<
3833
74
                        vk::PFN_vkCmdSetRayTracingPipelineStackSizeKHR,
3834
74
                        vk::PFN_vkVoidFunction,
3835
74
                    >(Self::cmd_set_ray_tracing_pipeline_stack_size_khr)
3836
74
                },
3837
74
            },
3838
74
            VulkanCommand {
3839
74
                name: "vkCmdSetRepresentativeFragmentTestEnableNV",
3840
74
                features: smallvec![
3841
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3842
0
                    Feature::Extension(Extension::EXTShaderObject)
3843
                ],
3844
74
                hooked: hooked_commands
3845
74
                    .contains(&LayerVulkanCommand::CmdSetRepresentativeFragmentTestEnableNv),
3846
74
                proc: unsafe {
3847
74
                    std::mem::transmute::<
3848
74
                        vk::PFN_vkCmdSetRepresentativeFragmentTestEnableNV,
3849
74
                        vk::PFN_vkVoidFunction,
3850
74
                    >(Self::cmd_set_representative_fragment_test_enable_nv)
3851
74
                },
3852
74
            },
3853
74
            VulkanCommand {
3854
74
                name: "vkCmdSetSampleLocationsEXT",
3855
74
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
3856
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleLocationsExt),
3857
74
                proc: unsafe {
3858
74
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleLocationsEXT, vk::PFN_vkVoidFunction>(
3859
74
                        Self::cmd_set_sample_locations_ext,
3860
74
                    )
3861
74
                },
3862
74
            },
3863
74
            VulkanCommand {
3864
74
                name: "vkCmdSetSampleLocationsEnableEXT",
3865
74
                features: smallvec![
3866
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3867
0
                    Feature::Extension(Extension::EXTShaderObject)
3868
                ],
3869
74
                hooked: hooked_commands
3870
74
                    .contains(&LayerVulkanCommand::CmdSetSampleLocationsEnableExt),
3871
74
                proc: unsafe {
3872
74
                    std::mem::transmute::<
3873
74
                        vk::PFN_vkCmdSetSampleLocationsEnableEXT,
3874
74
                        vk::PFN_vkVoidFunction,
3875
74
                    >(Self::cmd_set_sample_locations_enable_ext)
3876
74
                },
3877
74
            },
3878
74
            VulkanCommand {
3879
74
                name: "vkCmdSetSampleMaskEXT",
3880
74
                features: smallvec![
3881
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3882
0
                    Feature::Extension(Extension::EXTShaderObject)
3883
                ],
3884
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetSampleMaskExt),
3885
74
                proc: unsafe {
3886
74
                    std::mem::transmute::<vk::PFN_vkCmdSetSampleMaskEXT, vk::PFN_vkVoidFunction>(
3887
74
                        Self::cmd_set_sample_mask_ext,
3888
74
                    )
3889
74
                },
3890
74
            },
3891
74
            VulkanCommand {
3892
74
                name: "vkCmdSetScissor",
3893
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3894
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissor),
3895
74
                proc: unsafe {
3896
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissor, vk::PFN_vkVoidFunction>(
3897
74
                        Self::cmd_set_scissor,
3898
74
                    )
3899
74
                },
3900
74
            },
3901
74
            VulkanCommand {
3902
74
                name: "vkCmdSetScissorWithCount",
3903
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3904
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3905
74
                proc: unsafe {
3906
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3907
74
                        Self::cmd_set_scissor_with_count,
3908
74
                    )
3909
74
                },
3910
74
            },
3911
74
            VulkanCommand {
3912
74
                name: "vkCmdSetScissorWithCountEXT",
3913
74
                features: smallvec![
3914
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3915
0
                    Feature::Extension(Extension::EXTShaderObject)
3916
                ],
3917
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetScissorWithCount),
3918
74
                proc: unsafe {
3919
74
                    std::mem::transmute::<vk::PFN_vkCmdSetScissorWithCount, vk::PFN_vkVoidFunction>(
3920
74
                        Self::cmd_set_scissor_with_count,
3921
74
                    )
3922
74
                },
3923
74
            },
3924
74
            VulkanCommand {
3925
74
                name: "vkCmdSetShadingRateImageEnableNV",
3926
74
                features: smallvec![
3927
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
3928
0
                    Feature::Extension(Extension::EXTShaderObject)
3929
                ],
3930
74
                hooked: hooked_commands
3931
74
                    .contains(&LayerVulkanCommand::CmdSetShadingRateImageEnableNv),
3932
74
                proc: unsafe {
3933
74
                    std::mem::transmute::<
3934
74
                        vk::PFN_vkCmdSetShadingRateImageEnableNV,
3935
74
                        vk::PFN_vkVoidFunction,
3936
74
                    >(Self::cmd_set_shading_rate_image_enable_nv)
3937
74
                },
3938
74
            },
3939
74
            VulkanCommand {
3940
74
                name: "vkCmdSetStencilCompareMask",
3941
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3942
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilCompareMask),
3943
74
                proc: unsafe {
3944
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilCompareMask, vk::PFN_vkVoidFunction>(
3945
74
                        Self::cmd_set_stencil_compare_mask,
3946
74
                    )
3947
74
                },
3948
74
            },
3949
74
            VulkanCommand {
3950
74
                name: "vkCmdSetStencilOp",
3951
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3952
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3953
74
                proc: unsafe {
3954
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3955
74
                        Self::cmd_set_stencil_op,
3956
74
                    )
3957
74
                },
3958
74
            },
3959
74
            VulkanCommand {
3960
74
                name: "vkCmdSetStencilOpEXT",
3961
74
                features: smallvec![
3962
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3963
0
                    Feature::Extension(Extension::EXTShaderObject)
3964
                ],
3965
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilOp),
3966
74
                proc: unsafe {
3967
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilOp, vk::PFN_vkVoidFunction>(
3968
74
                        Self::cmd_set_stencil_op,
3969
74
                    )
3970
74
                },
3971
74
            },
3972
74
            VulkanCommand {
3973
74
                name: "vkCmdSetStencilReference",
3974
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
3975
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilReference),
3976
74
                proc: unsafe {
3977
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilReference, vk::PFN_vkVoidFunction>(
3978
74
                        Self::cmd_set_stencil_reference,
3979
74
                    )
3980
74
                },
3981
74
            },
3982
74
            VulkanCommand {
3983
74
                name: "vkCmdSetStencilTestEnable",
3984
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
3985
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3986
74
                proc: unsafe {
3987
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
3988
74
                        Self::cmd_set_stencil_test_enable,
3989
74
                    )
3990
74
                },
3991
74
            },
3992
74
            VulkanCommand {
3993
74
                name: "vkCmdSetStencilTestEnableEXT",
3994
74
                features: smallvec![
3995
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
3996
0
                    Feature::Extension(Extension::EXTShaderObject)
3997
                ],
3998
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilTestEnable),
3999
74
                proc: unsafe {
4000
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilTestEnable, vk::PFN_vkVoidFunction>(
4001
74
                        Self::cmd_set_stencil_test_enable,
4002
74
                    )
4003
74
                },
4004
74
            },
4005
74
            VulkanCommand {
4006
74
                name: "vkCmdSetStencilWriteMask",
4007
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4008
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetStencilWriteMask),
4009
74
                proc: unsafe {
4010
74
                    std::mem::transmute::<vk::PFN_vkCmdSetStencilWriteMask, vk::PFN_vkVoidFunction>(
4011
74
                        Self::cmd_set_stencil_write_mask,
4012
74
                    )
4013
74
                },
4014
74
            },
4015
74
            VulkanCommand {
4016
74
                name: "vkCmdSetTessellationDomainOriginEXT",
4017
74
                features: smallvec![
4018
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4019
0
                    Feature::Extension(Extension::EXTShaderObject)
4020
                ],
4021
74
                hooked: hooked_commands
4022
74
                    .contains(&LayerVulkanCommand::CmdSetTessellationDomainOriginExt),
4023
74
                proc: unsafe {
4024
74
                    std::mem::transmute::<
4025
74
                        vk::PFN_vkCmdSetTessellationDomainOriginEXT,
4026
74
                        vk::PFN_vkVoidFunction,
4027
74
                    >(Self::cmd_set_tessellation_domain_origin_ext)
4028
74
                },
4029
74
            },
4030
74
            VulkanCommand {
4031
74
                name: "vkCmdSetVertexInputEXT",
4032
74
                features: smallvec![
4033
0
                    Feature::Extension(Extension::EXTVertexInputDynamicState),
4034
0
                    Feature::Extension(Extension::EXTShaderObject)
4035
                ],
4036
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetVertexInputExt),
4037
74
                proc: unsafe {
4038
74
                    std::mem::transmute::<vk::PFN_vkCmdSetVertexInputEXT, vk::PFN_vkVoidFunction>(
4039
74
                        Self::cmd_set_vertex_input_ext,
4040
74
                    )
4041
74
                },
4042
74
            },
4043
74
            VulkanCommand {
4044
74
                name: "vkCmdSetViewport",
4045
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4046
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewport),
4047
74
                proc: unsafe {
4048
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewport, vk::PFN_vkVoidFunction>(
4049
74
                        Self::cmd_set_viewport,
4050
74
                    )
4051
74
                },
4052
74
            },
4053
74
            VulkanCommand {
4054
74
                name: "vkCmdSetViewportShadingRatePaletteNV",
4055
74
                features: smallvec![
Feature::Extension(Extension::NVShadingRateImage)0
],
4056
74
                hooked: hooked_commands
4057
74
                    .contains(&LayerVulkanCommand::CmdSetViewportShadingRatePaletteNv),
4058
74
                proc: unsafe {
4059
74
                    std::mem::transmute::<
4060
74
                        vk::PFN_vkCmdSetViewportShadingRatePaletteNV,
4061
74
                        vk::PFN_vkVoidFunction,
4062
74
                    >(Self::cmd_set_viewport_shading_rate_palette_nv)
4063
74
                },
4064
74
            },
4065
74
            VulkanCommand {
4066
74
                name: "vkCmdSetViewportSwizzleNV",
4067
74
                features: smallvec![
4068
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4069
0
                    Feature::Extension(Extension::EXTShaderObject)
4070
                ],
4071
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportSwizzleNv),
4072
74
                proc: unsafe {
4073
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportSwizzleNV, vk::PFN_vkVoidFunction>(
4074
74
                        Self::cmd_set_viewport_swizzle_nv,
4075
74
                    )
4076
74
                },
4077
74
            },
4078
74
            VulkanCommand {
4079
74
                name: "vkCmdSetViewportWScalingEnableNV",
4080
74
                features: smallvec![
4081
0
                    Feature::Extension(Extension::EXTExtendedDynamicState3),
4082
0
                    Feature::Extension(Extension::EXTShaderObject)
4083
                ],
4084
74
                hooked: hooked_commands
4085
74
                    .contains(&LayerVulkanCommand::CmdSetViewportWScalingEnableNv),
4086
74
                proc: unsafe {
4087
74
                    std::mem::transmute::<
4088
74
                        vk::PFN_vkCmdSetViewportWScalingEnableNV,
4089
74
                        vk::PFN_vkVoidFunction,
4090
74
                    >(Self::cmd_set_viewport_w_scaling_enable_nv)
4091
74
                },
4092
74
            },
4093
74
            VulkanCommand {
4094
74
                name: "vkCmdSetViewportWScalingNV",
4095
74
                features: smallvec![
Feature::Extension(Extension::NVClipSpaceWScaling)0
],
4096
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWScalingNv),
4097
74
                proc: unsafe {
4098
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWScalingNV, vk::PFN_vkVoidFunction>(
4099
74
                        Self::cmd_set_viewport_w_scaling_nv,
4100
74
                    )
4101
74
                },
4102
74
            },
4103
74
            VulkanCommand {
4104
74
                name: "vkCmdSetViewportWithCount",
4105
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4106
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4107
74
                proc: unsafe {
4108
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4109
74
                        Self::cmd_set_viewport_with_count,
4110
74
                    )
4111
74
                },
4112
74
            },
4113
74
            VulkanCommand {
4114
74
                name: "vkCmdSetViewportWithCountEXT",
4115
74
                features: smallvec![
4116
0
                    Feature::Extension(Extension::EXTExtendedDynamicState),
4117
0
                    Feature::Extension(Extension::EXTShaderObject)
4118
                ],
4119
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSetViewportWithCount),
4120
74
                proc: unsafe {
4121
74
                    std::mem::transmute::<vk::PFN_vkCmdSetViewportWithCount, vk::PFN_vkVoidFunction>(
4122
74
                        Self::cmd_set_viewport_with_count,
4123
74
                    )
4124
74
                },
4125
74
            },
4126
74
            VulkanCommand {
4127
74
                name: "vkCmdSubpassShadingHUAWEI",
4128
74
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
4129
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdSubpassShadingHuawei),
4130
74
                proc: unsafe {
4131
74
                    std::mem::transmute::<vk::PFN_vkCmdSubpassShadingHUAWEI, vk::PFN_vkVoidFunction>(
4132
74
                        Self::cmd_subpass_shading_huawei,
4133
74
                    )
4134
74
                },
4135
74
            },
4136
74
            VulkanCommand {
4137
74
                name: "vkCmdTraceRaysIndirect2KHR",
4138
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingMaintenance1)0
],
4139
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirect2Khr),
4140
74
                proc: unsafe {
4141
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirect2KHR, vk::PFN_vkVoidFunction>(
4142
74
                        Self::cmd_trace_rays_indirect2_khr,
4143
74
                    )
4144
74
                },
4145
74
            },
4146
74
            VulkanCommand {
4147
74
                name: "vkCmdTraceRaysIndirectKHR",
4148
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4149
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysIndirectKhr),
4150
74
                proc: unsafe {
4151
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysIndirectKHR, vk::PFN_vkVoidFunction>(
4152
74
                        Self::cmd_trace_rays_indirect_khr,
4153
74
                    )
4154
74
                },
4155
74
            },
4156
74
            VulkanCommand {
4157
74
                name: "vkCmdTraceRaysKHR",
4158
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4159
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysKhr),
4160
74
                proc: unsafe {
4161
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysKHR, vk::PFN_vkVoidFunction>(
4162
74
                        Self::cmd_trace_rays_khr,
4163
74
                    )
4164
74
                },
4165
74
            },
4166
74
            VulkanCommand {
4167
74
                name: "vkCmdTraceRaysNV",
4168
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4169
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdTraceRaysNv),
4170
74
                proc: unsafe {
4171
74
                    std::mem::transmute::<vk::PFN_vkCmdTraceRaysNV, vk::PFN_vkVoidFunction>(
4172
74
                        Self::cmd_trace_rays_nv,
4173
74
                    )
4174
74
                },
4175
74
            },
4176
74
            VulkanCommand {
4177
74
                name: "vkCmdUpdateBuffer",
4178
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4179
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdUpdateBuffer),
4180
74
                proc: unsafe {
4181
74
                    std::mem::transmute::<vk::PFN_vkCmdUpdateBuffer, vk::PFN_vkVoidFunction>(
4182
74
                        Self::cmd_update_buffer,
4183
74
                    )
4184
74
                },
4185
74
            },
4186
74
            VulkanCommand {
4187
74
                name: "vkCmdWaitEvents",
4188
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4189
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents),
4190
74
                proc: unsafe {
4191
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents, vk::PFN_vkVoidFunction>(
4192
74
                        Self::cmd_wait_events,
4193
74
                    )
4194
74
                },
4195
74
            },
4196
74
            VulkanCommand {
4197
74
                name: "vkCmdWaitEvents2",
4198
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4199
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4200
74
                proc: unsafe {
4201
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4202
74
                        Self::cmd_wait_events2,
4203
74
                    )
4204
74
                },
4205
74
            },
4206
74
            VulkanCommand {
4207
74
                name: "vkCmdWaitEvents2KHR",
4208
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4209
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWaitEvents2),
4210
74
                proc: unsafe {
4211
74
                    std::mem::transmute::<vk::PFN_vkCmdWaitEvents2, vk::PFN_vkVoidFunction>(
4212
74
                        Self::cmd_wait_events2,
4213
74
                    )
4214
74
                },
4215
74
            },
4216
74
            VulkanCommand {
4217
74
                name: "vkCmdWriteAccelerationStructuresPropertiesKHR",
4218
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4219
74
                hooked: hooked_commands
4220
74
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesKhr),
4221
74
                proc: unsafe {
4222
74
                    std::mem::transmute::<
4223
74
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesKHR,
4224
74
                        vk::PFN_vkVoidFunction,
4225
74
                    >(Self::cmd_write_acceleration_structures_properties_khr)
4226
74
                },
4227
74
            },
4228
74
            VulkanCommand {
4229
74
                name: "vkCmdWriteAccelerationStructuresPropertiesNV",
4230
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4231
74
                hooked: hooked_commands
4232
74
                    .contains(&LayerVulkanCommand::CmdWriteAccelerationStructuresPropertiesNv),
4233
74
                proc: unsafe {
4234
74
                    std::mem::transmute::<
4235
74
                        vk::PFN_vkCmdWriteAccelerationStructuresPropertiesNV,
4236
74
                        vk::PFN_vkVoidFunction,
4237
74
                    >(Self::cmd_write_acceleration_structures_properties_nv)
4238
74
                },
4239
74
            },
4240
74
            VulkanCommand {
4241
74
                name: "vkCmdWriteBufferMarker2AMD",
4242
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4243
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarker2Amd),
4244
74
                proc: unsafe {
4245
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarker2AMD, vk::PFN_vkVoidFunction>(
4246
74
                        Self::cmd_write_buffer_marker2_amd,
4247
74
                    )
4248
74
                },
4249
74
            },
4250
74
            VulkanCommand {
4251
74
                name: "vkCmdWriteBufferMarkerAMD",
4252
74
                features: smallvec![
Feature::Extension(Extension::AMDBufferMarker)0
],
4253
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteBufferMarkerAmd),
4254
74
                proc: unsafe {
4255
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteBufferMarkerAMD, vk::PFN_vkVoidFunction>(
4256
74
                        Self::cmd_write_buffer_marker_amd,
4257
74
                    )
4258
74
                },
4259
74
            },
4260
74
            VulkanCommand {
4261
74
                name: "vkCmdWriteMicromapsPropertiesEXT",
4262
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4263
74
                hooked: hooked_commands
4264
74
                    .contains(&LayerVulkanCommand::CmdWriteMicromapsPropertiesExt),
4265
74
                proc: unsafe {
4266
74
                    std::mem::transmute::<
4267
74
                        vk::PFN_vkCmdWriteMicromapsPropertiesEXT,
4268
74
                        vk::PFN_vkVoidFunction,
4269
74
                    >(Self::cmd_write_micromaps_properties_ext)
4270
74
                },
4271
74
            },
4272
74
            VulkanCommand {
4273
74
                name: "vkCmdWriteTimestamp",
4274
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4275
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp),
4276
74
                proc: unsafe {
4277
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp, vk::PFN_vkVoidFunction>(
4278
74
                        Self::cmd_write_timestamp,
4279
74
                    )
4280
74
                },
4281
74
            },
4282
74
            VulkanCommand {
4283
74
                name: "vkCmdWriteTimestamp2",
4284
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4285
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4286
74
                proc: unsafe {
4287
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4288
74
                        Self::cmd_write_timestamp2,
4289
74
                    )
4290
74
                },
4291
74
            },
4292
74
            VulkanCommand {
4293
74
                name: "vkCmdWriteTimestamp2KHR",
4294
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
4295
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CmdWriteTimestamp2),
4296
74
                proc: unsafe {
4297
74
                    std::mem::transmute::<vk::PFN_vkCmdWriteTimestamp2, vk::PFN_vkVoidFunction>(
4298
74
                        Self::cmd_write_timestamp2,
4299
74
                    )
4300
74
                },
4301
74
            },
4302
74
            VulkanCommand {
4303
74
                name: "vkCompileDeferredNV",
4304
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4305
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CompileDeferredNv),
4306
74
                proc: unsafe {
4307
74
                    std::mem::transmute::<vk::PFN_vkCompileDeferredNV, vk::PFN_vkVoidFunction>(
4308
74
                        Self::compile_deferred_nv,
4309
74
                    )
4310
74
                },
4311
74
            },
4312
74
            VulkanCommand {
4313
74
                name: "vkCopyAccelerationStructureKHR",
4314
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4315
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyAccelerationStructureKhr),
4316
74
                proc: unsafe {
4317
74
                    std::mem::transmute::<
4318
74
                        vk::PFN_vkCopyAccelerationStructureKHR,
4319
74
                        vk::PFN_vkVoidFunction,
4320
74
                    >(Self::copy_acceleration_structure_khr)
4321
74
                },
4322
74
            },
4323
74
            VulkanCommand {
4324
74
                name: "vkCopyAccelerationStructureToMemoryKHR",
4325
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4326
74
                hooked: hooked_commands
4327
74
                    .contains(&LayerVulkanCommand::CopyAccelerationStructureToMemoryKhr),
4328
74
                proc: unsafe {
4329
74
                    std::mem::transmute::<
4330
74
                        vk::PFN_vkCopyAccelerationStructureToMemoryKHR,
4331
74
                        vk::PFN_vkVoidFunction,
4332
74
                    >(Self::copy_acceleration_structure_to_memory_khr)
4333
74
                },
4334
74
            },
4335
74
            VulkanCommand {
4336
74
                name: "vkCopyMemoryToAccelerationStructureKHR",
4337
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4338
74
                hooked: hooked_commands
4339
74
                    .contains(&LayerVulkanCommand::CopyMemoryToAccelerationStructureKhr),
4340
74
                proc: unsafe {
4341
74
                    std::mem::transmute::<
4342
74
                        vk::PFN_vkCopyMemoryToAccelerationStructureKHR,
4343
74
                        vk::PFN_vkVoidFunction,
4344
74
                    >(Self::copy_memory_to_acceleration_structure_khr)
4345
74
                },
4346
74
            },
4347
74
            VulkanCommand {
4348
74
                name: "vkCopyMemoryToMicromapEXT",
4349
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4350
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMemoryToMicromapExt),
4351
74
                proc: unsafe {
4352
74
                    std::mem::transmute::<vk::PFN_vkCopyMemoryToMicromapEXT, vk::PFN_vkVoidFunction>(
4353
74
                        Self::copy_memory_to_micromap_ext,
4354
74
                    )
4355
74
                },
4356
74
            },
4357
74
            VulkanCommand {
4358
74
                name: "vkCopyMicromapEXT",
4359
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4360
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapExt),
4361
74
                proc: unsafe {
4362
74
                    std::mem::transmute::<vk::PFN_vkCopyMicromapEXT, vk::PFN_vkVoidFunction>(
4363
74
                        Self::copy_micromap_ext,
4364
74
                    )
4365
74
                },
4366
74
            },
4367
74
            VulkanCommand {
4368
74
                name: "vkCopyMicromapToMemoryEXT",
4369
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4370
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CopyMicromapToMemoryExt),
4371
74
                proc: unsafe {
4372
74
                    std::mem::transmute::<vk::PFN_vkCopyMicromapToMemoryEXT, vk::PFN_vkVoidFunction>(
4373
74
                        Self::copy_micromap_to_memory_ext,
4374
74
                    )
4375
74
                },
4376
74
            },
4377
74
            VulkanCommand {
4378
74
                name: "vkCreateAccelerationStructureKHR",
4379
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4380
74
                hooked: hooked_commands
4381
74
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureKhr),
4382
74
                proc: unsafe {
4383
74
                    std::mem::transmute::<
4384
74
                        vk::PFN_vkCreateAccelerationStructureKHR,
4385
74
                        vk::PFN_vkVoidFunction,
4386
74
                    >(Self::create_acceleration_structure_khr)
4387
74
                },
4388
74
            },
4389
74
            VulkanCommand {
4390
74
                name: "vkCreateAccelerationStructureNV",
4391
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4392
74
                hooked: hooked_commands
4393
74
                    .contains(&LayerVulkanCommand::CreateAccelerationStructureNv),
4394
74
                proc: unsafe {
4395
74
                    std::mem::transmute::<
4396
74
                        vk::PFN_vkCreateAccelerationStructureNV,
4397
74
                        vk::PFN_vkVoidFunction,
4398
74
                    >(Self::create_acceleration_structure_nv)
4399
74
                },
4400
74
            },
4401
74
            VulkanCommand {
4402
74
                name: "vkCreateBuffer",
4403
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4404
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBuffer),
4405
74
                proc: unsafe {
4406
74
                    std::mem::transmute::<vk::PFN_vkCreateBuffer, vk::PFN_vkVoidFunction>(
4407
74
                        Self::create_buffer,
4408
74
                    )
4409
74
                },
4410
74
            },
4411
74
            VulkanCommand {
4412
74
                name: "vkCreateBufferCollectionFUCHSIA",
4413
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4414
74
                hooked: hooked_commands
4415
74
                    .contains(&LayerVulkanCommand::CreateBufferCollectionFuchsia),
4416
74
                proc: unsafe {
4417
74
                    std::mem::transmute::<
4418
74
                        vk::PFN_vkCreateBufferCollectionFUCHSIA,
4419
74
                        vk::PFN_vkVoidFunction,
4420
74
                    >(Self::create_buffer_collection_fuchsia)
4421
74
                },
4422
74
            },
4423
74
            VulkanCommand {
4424
74
                name: "vkCreateBufferView",
4425
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4426
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateBufferView),
4427
74
                proc: unsafe {
4428
74
                    std::mem::transmute::<vk::PFN_vkCreateBufferView, vk::PFN_vkVoidFunction>(
4429
74
                        Self::create_buffer_view,
4430
74
                    )
4431
74
                },
4432
74
            },
4433
74
            VulkanCommand {
4434
74
                name: "vkCreateCommandPool",
4435
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4436
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCommandPool),
4437
74
                proc: unsafe {
4438
74
                    std::mem::transmute::<vk::PFN_vkCreateCommandPool, vk::PFN_vkVoidFunction>(
4439
74
                        Self::create_command_pool,
4440
74
                    )
4441
74
                },
4442
74
            },
4443
74
            VulkanCommand {
4444
74
                name: "vkCreateComputePipelines",
4445
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4446
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateComputePipelines),
4447
74
                proc: unsafe {
4448
74
                    std::mem::transmute::<vk::PFN_vkCreateComputePipelines, vk::PFN_vkVoidFunction>(
4449
74
                        Self::create_compute_pipelines,
4450
74
                    )
4451
74
                },
4452
74
            },
4453
74
            VulkanCommand {
4454
74
                name: "vkCreateCuFunctionNVX",
4455
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4456
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuFunctionNvx),
4457
74
                proc: unsafe {
4458
74
                    std::mem::transmute::<vk::PFN_vkCreateCuFunctionNVX, vk::PFN_vkVoidFunction>(
4459
74
                        Self::create_cu_function_nvx,
4460
74
                    )
4461
74
                },
4462
74
            },
4463
74
            VulkanCommand {
4464
74
                name: "vkCreateCuModuleNVX",
4465
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4466
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateCuModuleNvx),
4467
74
                proc: unsafe {
4468
74
                    std::mem::transmute::<vk::PFN_vkCreateCuModuleNVX, vk::PFN_vkVoidFunction>(
4469
74
                        Self::create_cu_module_nvx,
4470
74
                    )
4471
74
                },
4472
74
            },
4473
74
            VulkanCommand {
4474
74
                name: "vkCreateDeferredOperationKHR",
4475
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4476
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDeferredOperationKhr),
4477
74
                proc: unsafe {
4478
74
                    std::mem::transmute::<
4479
74
                        vk::PFN_vkCreateDeferredOperationKHR,
4480
74
                        vk::PFN_vkVoidFunction,
4481
74
                    >(Self::create_deferred_operation_khr)
4482
74
                },
4483
74
            },
4484
74
            VulkanCommand {
4485
74
                name: "vkCreateDescriptorPool",
4486
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4487
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorPool),
4488
74
                proc: unsafe {
4489
74
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorPool, vk::PFN_vkVoidFunction>(
4490
74
                        Self::create_descriptor_pool,
4491
74
                    )
4492
74
                },
4493
74
            },
4494
74
            VulkanCommand {
4495
74
                name: "vkCreateDescriptorSetLayout",
4496
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4497
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDescriptorSetLayout),
4498
74
                proc: unsafe {
4499
74
                    std::mem::transmute::<vk::PFN_vkCreateDescriptorSetLayout, vk::PFN_vkVoidFunction>(
4500
74
                        Self::create_descriptor_set_layout,
4501
74
                    )
4502
74
                },
4503
74
            },
4504
74
            VulkanCommand {
4505
74
                name: "vkCreateDescriptorUpdateTemplate",
4506
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4507
74
                hooked: hooked_commands
4508
74
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4509
74
                proc: unsafe {
4510
74
                    std::mem::transmute::<
4511
74
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4512
74
                        vk::PFN_vkVoidFunction,
4513
74
                    >(Self::create_descriptor_update_template)
4514
74
                },
4515
74
            },
4516
74
            VulkanCommand {
4517
74
                name: "vkCreateDescriptorUpdateTemplateKHR",
4518
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4519
74
                hooked: hooked_commands
4520
74
                    .contains(&LayerVulkanCommand::CreateDescriptorUpdateTemplate),
4521
74
                proc: unsafe {
4522
74
                    std::mem::transmute::<
4523
74
                        vk::PFN_vkCreateDescriptorUpdateTemplate,
4524
74
                        vk::PFN_vkVoidFunction,
4525
74
                    >(Self::create_descriptor_update_template)
4526
74
                },
4527
74
            },
4528
74
            VulkanCommand {
4529
74
                name: "vkCreateEvent",
4530
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4531
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateEvent),
4532
74
                proc: unsafe {
4533
74
                    std::mem::transmute::<vk::PFN_vkCreateEvent, vk::PFN_vkVoidFunction>(
4534
74
                        Self::create_event,
4535
74
                    )
4536
74
                },
4537
74
            },
4538
74
            VulkanCommand {
4539
74
                name: "vkCreateFence",
4540
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4541
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFence),
4542
74
                proc: unsafe {
4543
74
                    std::mem::transmute::<vk::PFN_vkCreateFence, vk::PFN_vkVoidFunction>(
4544
74
                        Self::create_fence,
4545
74
                    )
4546
74
                },
4547
74
            },
4548
74
            VulkanCommand {
4549
74
                name: "vkCreateFramebuffer",
4550
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4551
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateFramebuffer),
4552
74
                proc: unsafe {
4553
74
                    std::mem::transmute::<vk::PFN_vkCreateFramebuffer, vk::PFN_vkVoidFunction>(
4554
74
                        Self::create_framebuffer,
4555
74
                    )
4556
74
                },
4557
74
            },
4558
74
            VulkanCommand {
4559
74
                name: "vkCreateGraphicsPipelines",
4560
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4561
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateGraphicsPipelines),
4562
74
                proc: unsafe {
4563
74
                    std::mem::transmute::<vk::PFN_vkCreateGraphicsPipelines, vk::PFN_vkVoidFunction>(
4564
74
                        Self::create_graphics_pipelines,
4565
74
                    )
4566
74
                },
4567
74
            },
4568
74
            VulkanCommand {
4569
74
                name: "vkCreateImage",
4570
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4571
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImage),
4572
74
                proc: unsafe {
4573
74
                    std::mem::transmute::<vk::PFN_vkCreateImage, vk::PFN_vkVoidFunction>(
4574
74
                        Self::create_image,
4575
74
                    )
4576
74
                },
4577
74
            },
4578
74
            VulkanCommand {
4579
74
                name: "vkCreateImageView",
4580
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4581
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImageView),
4582
74
                proc: unsafe {
4583
74
                    std::mem::transmute::<vk::PFN_vkCreateImageView, vk::PFN_vkVoidFunction>(
4584
74
                        Self::create_image_view,
4585
74
                    )
4586
74
                },
4587
74
            },
4588
74
            VulkanCommand {
4589
74
                name: "vkCreateIndirectCommandsLayoutNV",
4590
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
4591
74
                hooked: hooked_commands
4592
74
                    .contains(&LayerVulkanCommand::CreateIndirectCommandsLayoutNv),
4593
74
                proc: unsafe {
4594
74
                    std::mem::transmute::<
4595
74
                        vk::PFN_vkCreateIndirectCommandsLayoutNV,
4596
74
                        vk::PFN_vkVoidFunction,
4597
74
                    >(Self::create_indirect_commands_layout_nv)
4598
74
                },
4599
74
            },
4600
74
            VulkanCommand {
4601
74
                name: "vkCreateMicromapEXT",
4602
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
4603
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMicromapExt),
4604
74
                proc: unsafe {
4605
74
                    std::mem::transmute::<vk::PFN_vkCreateMicromapEXT, vk::PFN_vkVoidFunction>(
4606
74
                        Self::create_micromap_ext,
4607
74
                    )
4608
74
                },
4609
74
            },
4610
74
            VulkanCommand {
4611
74
                name: "vkCreateOpticalFlowSessionNV",
4612
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
4613
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateOpticalFlowSessionNv),
4614
74
                proc: unsafe {
4615
74
                    std::mem::transmute::<
4616
74
                        vk::PFN_vkCreateOpticalFlowSessionNV,
4617
74
                        vk::PFN_vkVoidFunction,
4618
74
                    >(Self::create_optical_flow_session_nv)
4619
74
                },
4620
74
            },
4621
74
            VulkanCommand {
4622
74
                name: "vkCreatePipelineCache",
4623
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4624
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineCache),
4625
74
                proc: unsafe {
4626
74
                    std::mem::transmute::<vk::PFN_vkCreatePipelineCache, vk::PFN_vkVoidFunction>(
4627
74
                        Self::create_pipeline_cache,
4628
74
                    )
4629
74
                },
4630
74
            },
4631
74
            VulkanCommand {
4632
74
                name: "vkCreatePipelineLayout",
4633
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4634
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePipelineLayout),
4635
74
                proc: unsafe {
4636
74
                    std::mem::transmute::<vk::PFN_vkCreatePipelineLayout, vk::PFN_vkVoidFunction>(
4637
74
                        Self::create_pipeline_layout,
4638
74
                    )
4639
74
                },
4640
74
            },
4641
74
            VulkanCommand {
4642
74
                name: "vkCreatePrivateDataSlot",
4643
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
4644
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4645
74
                proc: unsafe {
4646
74
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4647
74
                        Self::create_private_data_slot,
4648
74
                    )
4649
74
                },
4650
74
            },
4651
74
            VulkanCommand {
4652
74
                name: "vkCreatePrivateDataSlotEXT",
4653
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
4654
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreatePrivateDataSlot),
4655
74
                proc: unsafe {
4656
74
                    std::mem::transmute::<vk::PFN_vkCreatePrivateDataSlot, vk::PFN_vkVoidFunction>(
4657
74
                        Self::create_private_data_slot,
4658
74
                    )
4659
74
                },
4660
74
            },
4661
74
            VulkanCommand {
4662
74
                name: "vkCreateQueryPool",
4663
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4664
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateQueryPool),
4665
74
                proc: unsafe {
4666
74
                    std::mem::transmute::<vk::PFN_vkCreateQueryPool, vk::PFN_vkVoidFunction>(
4667
74
                        Self::create_query_pool,
4668
74
                    )
4669
74
                },
4670
74
            },
4671
74
            VulkanCommand {
4672
74
                name: "vkCreateRayTracingPipelinesKHR",
4673
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
4674
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesKhr),
4675
74
                proc: unsafe {
4676
74
                    std::mem::transmute::<
4677
74
                        vk::PFN_vkCreateRayTracingPipelinesKHR,
4678
74
                        vk::PFN_vkVoidFunction,
4679
74
                    >(Self::create_ray_tracing_pipelines_khr)
4680
74
                },
4681
74
            },
4682
74
            VulkanCommand {
4683
74
                name: "vkCreateRayTracingPipelinesNV",
4684
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4685
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRayTracingPipelinesNv),
4686
74
                proc: unsafe {
4687
74
                    std::mem::transmute::<
4688
74
                        vk::PFN_vkCreateRayTracingPipelinesNV,
4689
74
                        vk::PFN_vkVoidFunction,
4690
74
                    >(Self::create_ray_tracing_pipelines_nv)
4691
74
                },
4692
74
            },
4693
74
            VulkanCommand {
4694
74
                name: "vkCreateRenderPass",
4695
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4696
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass),
4697
74
                proc: unsafe {
4698
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass, vk::PFN_vkVoidFunction>(
4699
74
                        Self::create_render_pass,
4700
74
                    )
4701
74
                },
4702
74
            },
4703
74
            VulkanCommand {
4704
74
                name: "vkCreateRenderPass2",
4705
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
4706
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4707
74
                proc: unsafe {
4708
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4709
74
                        Self::create_render_pass2,
4710
74
                    )
4711
74
                },
4712
74
            },
4713
74
            VulkanCommand {
4714
74
                name: "vkCreateRenderPass2KHR",
4715
74
                features: smallvec![
Feature::Extension(Extension::KHRCreateRenderpass2)0
],
4716
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateRenderPass2),
4717
74
                proc: unsafe {
4718
74
                    std::mem::transmute::<vk::PFN_vkCreateRenderPass2, vk::PFN_vkVoidFunction>(
4719
74
                        Self::create_render_pass2,
4720
74
                    )
4721
74
                },
4722
74
            },
4723
74
            VulkanCommand {
4724
74
                name: "vkCreateSampler",
4725
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4726
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSampler),
4727
74
                proc: unsafe {
4728
74
                    std::mem::transmute::<vk::PFN_vkCreateSampler, vk::PFN_vkVoidFunction>(
4729
74
                        Self::create_sampler,
4730
74
                    )
4731
74
                },
4732
74
            },
4733
74
            VulkanCommand {
4734
74
                name: "vkCreateSamplerYcbcrConversion",
4735
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4736
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4737
74
                proc: unsafe {
4738
74
                    std::mem::transmute::<
4739
74
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4740
74
                        vk::PFN_vkVoidFunction,
4741
74
                    >(Self::create_sampler_ycbcr_conversion)
4742
74
                },
4743
74
            },
4744
74
            VulkanCommand {
4745
74
                name: "vkCreateSamplerYcbcrConversionKHR",
4746
74
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
4747
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSamplerYcbcrConversion),
4748
74
                proc: unsafe {
4749
74
                    std::mem::transmute::<
4750
74
                        vk::PFN_vkCreateSamplerYcbcrConversion,
4751
74
                        vk::PFN_vkVoidFunction,
4752
74
                    >(Self::create_sampler_ycbcr_conversion)
4753
74
                },
4754
74
            },
4755
74
            VulkanCommand {
4756
74
                name: "vkCreateSemaphore",
4757
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4758
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSemaphore),
4759
74
                proc: unsafe {
4760
74
                    std::mem::transmute::<vk::PFN_vkCreateSemaphore, vk::PFN_vkVoidFunction>(
4761
74
                        Self::create_semaphore,
4762
74
                    )
4763
74
                },
4764
74
            },
4765
74
            VulkanCommand {
4766
74
                name: "vkCreateShaderModule",
4767
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4768
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateShaderModule),
4769
74
                proc: unsafe {
4770
74
                    std::mem::transmute::<vk::PFN_vkCreateShaderModule, vk::PFN_vkVoidFunction>(
4771
74
                        Self::create_shader_module,
4772
74
                    )
4773
74
                },
4774
74
            },
4775
74
            VulkanCommand {
4776
74
                name: "vkCreateSharedSwapchainsKHR",
4777
74
                features: smallvec![
Feature::Extension(Extension::KHRDisplaySwapchain)0
],
4778
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSharedSwapchainsKhr),
4779
74
                proc: unsafe {
4780
74
                    std::mem::transmute::<vk::PFN_vkCreateSharedSwapchainsKHR, vk::PFN_vkVoidFunction>(
4781
74
                        Self::create_shared_swapchains_khr,
4782
74
                    )
4783
74
                },
4784
74
            },
4785
74
            VulkanCommand {
4786
74
                name: "vkCreateSwapchainKHR",
4787
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
4788
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateSwapchainKhr),
4789
74
                proc: unsafe {
4790
74
                    std::mem::transmute::<vk::PFN_vkCreateSwapchainKHR, vk::PFN_vkVoidFunction>(
4791
74
                        Self::create_swapchain_khr,
4792
74
                    )
4793
74
                },
4794
74
            },
4795
74
            VulkanCommand {
4796
74
                name: "vkCreateValidationCacheEXT",
4797
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
4798
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateValidationCacheExt),
4799
74
                proc: unsafe {
4800
74
                    std::mem::transmute::<vk::PFN_vkCreateValidationCacheEXT, vk::PFN_vkVoidFunction>(
4801
74
                        Self::create_validation_cache_ext,
4802
74
                    )
4803
74
                },
4804
74
            },
4805
74
            VulkanCommand {
4806
74
                name: "vkCreateVideoSessionKHR",
4807
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4808
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateVideoSessionKhr),
4809
74
                proc: unsafe {
4810
74
                    std::mem::transmute::<vk::PFN_vkCreateVideoSessionKHR, vk::PFN_vkVoidFunction>(
4811
74
                        Self::create_video_session_khr,
4812
74
                    )
4813
74
                },
4814
74
            },
4815
74
            VulkanCommand {
4816
74
                name: "vkCreateVideoSessionParametersKHR",
4817
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
4818
74
                hooked: hooked_commands
4819
74
                    .contains(&LayerVulkanCommand::CreateVideoSessionParametersKhr),
4820
74
                proc: unsafe {
4821
74
                    std::mem::transmute::<
4822
74
                        vk::PFN_vkCreateVideoSessionParametersKHR,
4823
74
                        vk::PFN_vkVoidFunction,
4824
74
                    >(Self::create_video_session_parameters_khr)
4825
74
                },
4826
74
            },
4827
74
            VulkanCommand {
4828
74
                name: "vkDebugMarkerSetObjectNameEXT",
4829
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4830
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectNameExt),
4831
74
                proc: unsafe {
4832
74
                    std::mem::transmute::<
4833
74
                        vk::PFN_vkDebugMarkerSetObjectNameEXT,
4834
74
                        vk::PFN_vkVoidFunction,
4835
74
                    >(Self::debug_marker_set_object_name_ext)
4836
74
                },
4837
74
            },
4838
74
            VulkanCommand {
4839
74
                name: "vkDebugMarkerSetObjectTagEXT",
4840
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugMarker)0
],
4841
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugMarkerSetObjectTagExt),
4842
74
                proc: unsafe {
4843
74
                    std::mem::transmute::<
4844
74
                        vk::PFN_vkDebugMarkerSetObjectTagEXT,
4845
74
                        vk::PFN_vkVoidFunction,
4846
74
                    >(Self::debug_marker_set_object_tag_ext)
4847
74
                },
4848
74
            },
4849
74
            VulkanCommand {
4850
74
                name: "vkDeferredOperationJoinKHR",
4851
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4852
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeferredOperationJoinKhr),
4853
74
                proc: unsafe {
4854
74
                    std::mem::transmute::<vk::PFN_vkDeferredOperationJoinKHR, vk::PFN_vkVoidFunction>(
4855
74
                        Self::deferred_operation_join_khr,
4856
74
                    )
4857
74
                },
4858
74
            },
4859
74
            VulkanCommand {
4860
74
                name: "vkDestroyAccelerationStructureKHR",
4861
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
4862
74
                hooked: hooked_commands
4863
74
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureKhr),
4864
74
                proc: unsafe {
4865
74
                    std::mem::transmute::<
4866
74
                        vk::PFN_vkDestroyAccelerationStructureKHR,
4867
74
                        vk::PFN_vkVoidFunction,
4868
74
                    >(Self::destroy_acceleration_structure_khr)
4869
74
                },
4870
74
            },
4871
74
            VulkanCommand {
4872
74
                name: "vkDestroyAccelerationStructureNV",
4873
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
4874
74
                hooked: hooked_commands
4875
74
                    .contains(&LayerVulkanCommand::DestroyAccelerationStructureNv),
4876
74
                proc: unsafe {
4877
74
                    std::mem::transmute::<
4878
74
                        vk::PFN_vkDestroyAccelerationStructureNV,
4879
74
                        vk::PFN_vkVoidFunction,
4880
74
                    >(Self::destroy_acceleration_structure_nv)
4881
74
                },
4882
74
            },
4883
74
            VulkanCommand {
4884
74
                name: "vkDestroyBuffer",
4885
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4886
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBuffer),
4887
74
                proc: unsafe {
4888
74
                    std::mem::transmute::<vk::PFN_vkDestroyBuffer, vk::PFN_vkVoidFunction>(
4889
74
                        Self::destroy_buffer,
4890
74
                    )
4891
74
                },
4892
74
            },
4893
74
            VulkanCommand {
4894
74
                name: "vkDestroyBufferCollectionFUCHSIA",
4895
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
4896
74
                hooked: hooked_commands
4897
74
                    .contains(&LayerVulkanCommand::DestroyBufferCollectionFuchsia),
4898
74
                proc: unsafe {
4899
74
                    std::mem::transmute::<
4900
74
                        vk::PFN_vkDestroyBufferCollectionFUCHSIA,
4901
74
                        vk::PFN_vkVoidFunction,
4902
74
                    >(Self::destroy_buffer_collection_fuchsia)
4903
74
                },
4904
74
            },
4905
74
            VulkanCommand {
4906
74
                name: "vkDestroyBufferView",
4907
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4908
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyBufferView),
4909
74
                proc: unsafe {
4910
74
                    std::mem::transmute::<vk::PFN_vkDestroyBufferView, vk::PFN_vkVoidFunction>(
4911
74
                        Self::destroy_buffer_view,
4912
74
                    )
4913
74
                },
4914
74
            },
4915
74
            VulkanCommand {
4916
74
                name: "vkDestroyCommandPool",
4917
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4918
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCommandPool),
4919
74
                proc: unsafe {
4920
74
                    std::mem::transmute::<vk::PFN_vkDestroyCommandPool, vk::PFN_vkVoidFunction>(
4921
74
                        Self::destroy_command_pool,
4922
74
                    )
4923
74
                },
4924
74
            },
4925
74
            VulkanCommand {
4926
74
                name: "vkDestroyCuFunctionNVX",
4927
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4928
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuFunctionNvx),
4929
74
                proc: unsafe {
4930
74
                    std::mem::transmute::<vk::PFN_vkDestroyCuFunctionNVX, vk::PFN_vkVoidFunction>(
4931
74
                        Self::destroy_cu_function_nvx,
4932
74
                    )
4933
74
                },
4934
74
            },
4935
74
            VulkanCommand {
4936
74
                name: "vkDestroyCuModuleNVX",
4937
74
                features: smallvec![
Feature::Extension(Extension::NVXBinaryImport)0
],
4938
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyCuModuleNvx),
4939
74
                proc: unsafe {
4940
74
                    std::mem::transmute::<vk::PFN_vkDestroyCuModuleNVX, vk::PFN_vkVoidFunction>(
4941
74
                        Self::destroy_cu_module_nvx,
4942
74
                    )
4943
74
                },
4944
74
            },
4945
74
            VulkanCommand {
4946
74
                name: "vkDestroyDeferredOperationKHR",
4947
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
4948
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDeferredOperationKhr),
4949
74
                proc: unsafe {
4950
74
                    std::mem::transmute::<
4951
74
                        vk::PFN_vkDestroyDeferredOperationKHR,
4952
74
                        vk::PFN_vkVoidFunction,
4953
74
                    >(Self::destroy_deferred_operation_khr)
4954
74
                },
4955
74
            },
4956
74
            VulkanCommand {
4957
74
                name: "vkDestroyDescriptorPool",
4958
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4959
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorPool),
4960
74
                proc: unsafe {
4961
74
                    std::mem::transmute::<vk::PFN_vkDestroyDescriptorPool, vk::PFN_vkVoidFunction>(
4962
74
                        Self::destroy_descriptor_pool,
4963
74
                    )
4964
74
                },
4965
74
            },
4966
74
            VulkanCommand {
4967
74
                name: "vkDestroyDescriptorSetLayout",
4968
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
4969
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDescriptorSetLayout),
4970
74
                proc: unsafe {
4971
74
                    std::mem::transmute::<
4972
74
                        vk::PFN_vkDestroyDescriptorSetLayout,
4973
74
                        vk::PFN_vkVoidFunction,
4974
74
                    >(Self::destroy_descriptor_set_layout)
4975
74
                },
4976
74
            },
4977
74
            VulkanCommand {
4978
74
                name: "vkDestroyDescriptorUpdateTemplate",
4979
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
4980
74
                hooked: hooked_commands
4981
74
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4982
74
                proc: unsafe {
4983
74
                    std::mem::transmute::<
4984
74
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4985
74
                        vk::PFN_vkVoidFunction,
4986
74
                    >(Self::destroy_descriptor_update_template)
4987
74
                },
4988
74
            },
4989
74
            VulkanCommand {
4990
74
                name: "vkDestroyDescriptorUpdateTemplateKHR",
4991
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
4992
74
                hooked: hooked_commands
4993
74
                    .contains(&LayerVulkanCommand::DestroyDescriptorUpdateTemplate),
4994
74
                proc: unsafe {
4995
74
                    std::mem::transmute::<
4996
74
                        vk::PFN_vkDestroyDescriptorUpdateTemplate,
4997
74
                        vk::PFN_vkVoidFunction,
4998
74
                    >(Self::destroy_descriptor_update_template)
4999
74
                },
5000
74
            },
5001
74
            VulkanCommand {
5002
74
                name: "vkDestroyDevice",
5003
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5004
                hooked: true,
5005
                proc: unsafe {
5006
74
                    std::mem::transmute::<vk::PFN_vkDestroyDevice, vk::PFN_vkVoidFunction>(
5007
74
                        Self::destroy_device,
5008
74
                    )
5009
74
                },
5010
74
            },
5011
74
            VulkanCommand {
5012
74
                name: "vkDestroyEvent",
5013
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5014
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyEvent),
5015
74
                proc: unsafe {
5016
74
                    std::mem::transmute::<vk::PFN_vkDestroyEvent, vk::PFN_vkVoidFunction>(
5017
74
                        Self::destroy_event,
5018
74
                    )
5019
74
                },
5020
74
            },
5021
74
            VulkanCommand {
5022
74
                name: "vkDestroyFence",
5023
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5024
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFence),
5025
74
                proc: unsafe {
5026
74
                    std::mem::transmute::<vk::PFN_vkDestroyFence, vk::PFN_vkVoidFunction>(
5027
74
                        Self::destroy_fence,
5028
74
                    )
5029
74
                },
5030
74
            },
5031
74
            VulkanCommand {
5032
74
                name: "vkDestroyFramebuffer",
5033
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5034
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyFramebuffer),
5035
74
                proc: unsafe {
5036
74
                    std::mem::transmute::<vk::PFN_vkDestroyFramebuffer, vk::PFN_vkVoidFunction>(
5037
74
                        Self::destroy_framebuffer,
5038
74
                    )
5039
74
                },
5040
74
            },
5041
74
            VulkanCommand {
5042
74
                name: "vkDestroyImage",
5043
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5044
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImage),
5045
74
                proc: unsafe {
5046
74
                    std::mem::transmute::<vk::PFN_vkDestroyImage, vk::PFN_vkVoidFunction>(
5047
74
                        Self::destroy_image,
5048
74
                    )
5049
74
                },
5050
74
            },
5051
74
            VulkanCommand {
5052
74
                name: "vkDestroyImageView",
5053
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5054
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyImageView),
5055
74
                proc: unsafe {
5056
74
                    std::mem::transmute::<vk::PFN_vkDestroyImageView, vk::PFN_vkVoidFunction>(
5057
74
                        Self::destroy_image_view,
5058
74
                    )
5059
74
                },
5060
74
            },
5061
74
            VulkanCommand {
5062
74
                name: "vkDestroyIndirectCommandsLayoutNV",
5063
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5064
74
                hooked: hooked_commands
5065
74
                    .contains(&LayerVulkanCommand::DestroyIndirectCommandsLayoutNv),
5066
74
                proc: unsafe {
5067
74
                    std::mem::transmute::<
5068
74
                        vk::PFN_vkDestroyIndirectCommandsLayoutNV,
5069
74
                        vk::PFN_vkVoidFunction,
5070
74
                    >(Self::destroy_indirect_commands_layout_nv)
5071
74
                },
5072
74
            },
5073
74
            VulkanCommand {
5074
74
                name: "vkDestroyMicromapEXT",
5075
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5076
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyMicromapExt),
5077
74
                proc: unsafe {
5078
74
                    std::mem::transmute::<vk::PFN_vkDestroyMicromapEXT, vk::PFN_vkVoidFunction>(
5079
74
                        Self::destroy_micromap_ext,
5080
74
                    )
5081
74
                },
5082
74
            },
5083
74
            VulkanCommand {
5084
74
                name: "vkDestroyOpticalFlowSessionNV",
5085
74
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
5086
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyOpticalFlowSessionNv),
5087
74
                proc: unsafe {
5088
74
                    std::mem::transmute::<
5089
74
                        vk::PFN_vkDestroyOpticalFlowSessionNV,
5090
74
                        vk::PFN_vkVoidFunction,
5091
74
                    >(Self::destroy_optical_flow_session_nv)
5092
74
                },
5093
74
            },
5094
74
            VulkanCommand {
5095
74
                name: "vkDestroyPipeline",
5096
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5097
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipeline),
5098
74
                proc: unsafe {
5099
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipeline, vk::PFN_vkVoidFunction>(
5100
74
                        Self::destroy_pipeline,
5101
74
                    )
5102
74
                },
5103
74
            },
5104
74
            VulkanCommand {
5105
74
                name: "vkDestroyPipelineCache",
5106
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5107
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineCache),
5108
74
                proc: unsafe {
5109
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineCache, vk::PFN_vkVoidFunction>(
5110
74
                        Self::destroy_pipeline_cache,
5111
74
                    )
5112
74
                },
5113
74
            },
5114
74
            VulkanCommand {
5115
74
                name: "vkDestroyPipelineLayout",
5116
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5117
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPipelineLayout),
5118
74
                proc: unsafe {
5119
74
                    std::mem::transmute::<vk::PFN_vkDestroyPipelineLayout, vk::PFN_vkVoidFunction>(
5120
74
                        Self::destroy_pipeline_layout,
5121
74
                    )
5122
74
                },
5123
74
            },
5124
74
            VulkanCommand {
5125
74
                name: "vkDestroyPrivateDataSlot",
5126
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5127
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5128
74
                proc: unsafe {
5129
74
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5130
74
                        Self::destroy_private_data_slot,
5131
74
                    )
5132
74
                },
5133
74
            },
5134
74
            VulkanCommand {
5135
74
                name: "vkDestroyPrivateDataSlotEXT",
5136
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
5137
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyPrivateDataSlot),
5138
74
                proc: unsafe {
5139
74
                    std::mem::transmute::<vk::PFN_vkDestroyPrivateDataSlot, vk::PFN_vkVoidFunction>(
5140
74
                        Self::destroy_private_data_slot,
5141
74
                    )
5142
74
                },
5143
74
            },
5144
74
            VulkanCommand {
5145
74
                name: "vkDestroyQueryPool",
5146
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5147
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyQueryPool),
5148
74
                proc: unsafe {
5149
74
                    std::mem::transmute::<vk::PFN_vkDestroyQueryPool, vk::PFN_vkVoidFunction>(
5150
74
                        Self::destroy_query_pool,
5151
74
                    )
5152
74
                },
5153
74
            },
5154
74
            VulkanCommand {
5155
74
                name: "vkDestroyRenderPass",
5156
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5157
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyRenderPass),
5158
74
                proc: unsafe {
5159
74
                    std::mem::transmute::<vk::PFN_vkDestroyRenderPass, vk::PFN_vkVoidFunction>(
5160
74
                        Self::destroy_render_pass,
5161
74
                    )
5162
74
                },
5163
74
            },
5164
74
            VulkanCommand {
5165
74
                name: "vkDestroySampler",
5166
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5167
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySampler),
5168
74
                proc: unsafe {
5169
74
                    std::mem::transmute::<vk::PFN_vkDestroySampler, vk::PFN_vkVoidFunction>(
5170
74
                        Self::destroy_sampler,
5171
74
                    )
5172
74
                },
5173
74
            },
5174
74
            VulkanCommand {
5175
74
                name: "vkDestroySamplerYcbcrConversion",
5176
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5177
74
                hooked: hooked_commands
5178
74
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5179
74
                proc: unsafe {
5180
74
                    std::mem::transmute::<
5181
74
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5182
74
                        vk::PFN_vkVoidFunction,
5183
74
                    >(Self::destroy_sampler_ycbcr_conversion)
5184
74
                },
5185
74
            },
5186
74
            VulkanCommand {
5187
74
                name: "vkDestroySamplerYcbcrConversionKHR",
5188
74
                features: smallvec![
Feature::Extension(Extension::KHRSamplerYcbcrConversion)0
],
5189
74
                hooked: hooked_commands
5190
74
                    .contains(&LayerVulkanCommand::DestroySamplerYcbcrConversion),
5191
74
                proc: unsafe {
5192
74
                    std::mem::transmute::<
5193
74
                        vk::PFN_vkDestroySamplerYcbcrConversion,
5194
74
                        vk::PFN_vkVoidFunction,
5195
74
                    >(Self::destroy_sampler_ycbcr_conversion)
5196
74
                },
5197
74
            },
5198
74
            VulkanCommand {
5199
74
                name: "vkDestroySemaphore",
5200
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5201
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySemaphore),
5202
74
                proc: unsafe {
5203
74
                    std::mem::transmute::<vk::PFN_vkDestroySemaphore, vk::PFN_vkVoidFunction>(
5204
74
                        Self::destroy_semaphore,
5205
74
                    )
5206
74
                },
5207
74
            },
5208
74
            VulkanCommand {
5209
74
                name: "vkDestroyShaderModule",
5210
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5211
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyShaderModule),
5212
74
                proc: unsafe {
5213
74
                    std::mem::transmute::<vk::PFN_vkDestroyShaderModule, vk::PFN_vkVoidFunction>(
5214
74
                        Self::destroy_shader_module,
5215
74
                    )
5216
74
                },
5217
74
            },
5218
74
            VulkanCommand {
5219
74
                name: "vkDestroySwapchainKHR",
5220
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
5221
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySwapchainKhr),
5222
74
                proc: unsafe {
5223
74
                    std::mem::transmute::<vk::PFN_vkDestroySwapchainKHR, vk::PFN_vkVoidFunction>(
5224
74
                        Self::destroy_swapchain_khr,
5225
74
                    )
5226
74
                },
5227
74
            },
5228
74
            VulkanCommand {
5229
74
                name: "vkDestroyValidationCacheEXT",
5230
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
5231
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyValidationCacheExt),
5232
74
                proc: unsafe {
5233
74
                    std::mem::transmute::<vk::PFN_vkDestroyValidationCacheEXT, vk::PFN_vkVoidFunction>(
5234
74
                        Self::destroy_validation_cache_ext,
5235
74
                    )
5236
74
                },
5237
74
            },
5238
74
            VulkanCommand {
5239
74
                name: "vkDestroyVideoSessionKHR",
5240
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5241
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyVideoSessionKhr),
5242
74
                proc: unsafe {
5243
74
                    std::mem::transmute::<vk::PFN_vkDestroyVideoSessionKHR, vk::PFN_vkVoidFunction>(
5244
74
                        Self::destroy_video_session_khr,
5245
74
                    )
5246
74
                },
5247
74
            },
5248
74
            VulkanCommand {
5249
74
                name: "vkDestroyVideoSessionParametersKHR",
5250
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
5251
74
                hooked: hooked_commands
5252
74
                    .contains(&LayerVulkanCommand::DestroyVideoSessionParametersKhr),
5253
74
                proc: unsafe {
5254
74
                    std::mem::transmute::<
5255
74
                        vk::PFN_vkDestroyVideoSessionParametersKHR,
5256
74
                        vk::PFN_vkVoidFunction,
5257
74
                    >(Self::destroy_video_session_parameters_khr)
5258
74
                },
5259
74
            },
5260
74
            VulkanCommand {
5261
74
                name: "vkDeviceWaitIdle",
5262
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5263
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DeviceWaitIdle),
5264
74
                proc: unsafe {
5265
74
                    std::mem::transmute::<vk::PFN_vkDeviceWaitIdle, vk::PFN_vkVoidFunction>(
5266
74
                        Self::device_wait_idle,
5267
74
                    )
5268
74
                },
5269
74
            },
5270
74
            VulkanCommand {
5271
74
                name: "vkDisplayPowerControlEXT",
5272
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
5273
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::DisplayPowerControlExt),
5274
74
                proc: unsafe {
5275
74
                    std::mem::transmute::<vk::PFN_vkDisplayPowerControlEXT, vk::PFN_vkVoidFunction>(
5276
74
                        Self::display_power_control_ext,
5277
74
                    )
5278
74
                },
5279
74
            },
5280
74
            VulkanCommand {
5281
74
                name: "vkEndCommandBuffer",
5282
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5283
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::EndCommandBuffer),
5284
74
                proc: unsafe {
5285
74
                    std::mem::transmute::<vk::PFN_vkEndCommandBuffer, vk::PFN_vkVoidFunction>(
5286
74
                        Self::end_command_buffer,
5287
74
                    )
5288
74
                },
5289
74
            },
5290
74
            VulkanCommand {
5291
74
                name: "vkExportMetalObjectsEXT",
5292
74
                features: smallvec![
Feature::Extension(Extension::EXTMetalObjects)0
],
5293
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ExportMetalObjectsExt),
5294
74
                proc: unsafe {
5295
74
                    std::mem::transmute::<vk::PFN_vkExportMetalObjectsEXT, vk::PFN_vkVoidFunction>(
5296
74
                        Self::export_metal_objects_ext,
5297
74
                    )
5298
74
                },
5299
74
            },
5300
74
            VulkanCommand {
5301
74
                name: "vkFlushMappedMemoryRanges",
5302
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5303
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FlushMappedMemoryRanges),
5304
74
                proc: unsafe {
5305
74
                    std::mem::transmute::<vk::PFN_vkFlushMappedMemoryRanges, vk::PFN_vkVoidFunction>(
5306
74
                        Self::flush_mapped_memory_ranges,
5307
74
                    )
5308
74
                },
5309
74
            },
5310
74
            VulkanCommand {
5311
74
                name: "vkFreeCommandBuffers",
5312
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5313
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeCommandBuffers),
5314
74
                proc: unsafe {
5315
74
                    std::mem::transmute::<vk::PFN_vkFreeCommandBuffers, vk::PFN_vkVoidFunction>(
5316
74
                        Self::free_command_buffers,
5317
74
                    )
5318
74
                },
5319
74
            },
5320
74
            VulkanCommand {
5321
74
                name: "vkFreeDescriptorSets",
5322
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5323
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeDescriptorSets),
5324
74
                proc: unsafe {
5325
74
                    std::mem::transmute::<vk::PFN_vkFreeDescriptorSets, vk::PFN_vkVoidFunction>(
5326
74
                        Self::free_descriptor_sets,
5327
74
                    )
5328
74
                },
5329
74
            },
5330
74
            VulkanCommand {
5331
74
                name: "vkFreeMemory",
5332
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5333
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::FreeMemory),
5334
74
                proc: unsafe {
5335
74
                    std::mem::transmute::<vk::PFN_vkFreeMemory, vk::PFN_vkVoidFunction>(
5336
74
                        Self::free_memory,
5337
74
                    )
5338
74
                },
5339
74
            },
5340
74
            VulkanCommand {
5341
74
                name: "vkGetAccelerationStructureBuildSizesKHR",
5342
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5343
74
                hooked: hooked_commands
5344
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureBuildSizesKhr),
5345
74
                proc: unsafe {
5346
74
                    std::mem::transmute::<
5347
74
                        vk::PFN_vkGetAccelerationStructureBuildSizesKHR,
5348
74
                        vk::PFN_vkVoidFunction,
5349
74
                    >(Self::get_acceleration_structure_build_sizes_khr)
5350
74
                },
5351
74
            },
5352
74
            VulkanCommand {
5353
74
                name: "vkGetAccelerationStructureDeviceAddressKHR",
5354
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5355
74
                hooked: hooked_commands
5356
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureDeviceAddressKhr),
5357
74
                proc: unsafe {
5358
74
                    std::mem::transmute::<
5359
74
                        vk::PFN_vkGetAccelerationStructureDeviceAddressKHR,
5360
74
                        vk::PFN_vkVoidFunction,
5361
74
                    >(Self::get_acceleration_structure_device_address_khr)
5362
74
                },
5363
74
            },
5364
74
            VulkanCommand {
5365
74
                name: "vkGetAccelerationStructureHandleNV",
5366
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5367
74
                hooked: hooked_commands
5368
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureHandleNv),
5369
74
                proc: unsafe {
5370
74
                    std::mem::transmute::<
5371
74
                        vk::PFN_vkGetAccelerationStructureHandleNV,
5372
74
                        vk::PFN_vkVoidFunction,
5373
74
                    >(Self::get_acceleration_structure_handle_nv)
5374
74
                },
5375
74
            },
5376
74
            VulkanCommand {
5377
74
                name: "vkGetAccelerationStructureMemoryRequirementsNV",
5378
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
5379
74
                hooked: hooked_commands
5380
74
                    .contains(&LayerVulkanCommand::GetAccelerationStructureMemoryRequirementsNv),
5381
74
                proc: unsafe {
5382
74
                    std::mem::transmute::<
5383
74
                        vk::PFN_vkGetAccelerationStructureMemoryRequirementsNV,
5384
74
                        vk::PFN_vkVoidFunction,
5385
74
                    >(Self::get_acceleration_structure_memory_requirements_nv)
5386
74
                },
5387
74
            },
5388
74
            VulkanCommand {
5389
74
                name: "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT",
5390
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5391
74
                hooked: hooked_commands.contains(
5392
74
                    &LayerVulkanCommand::GetAccelerationStructureOpaqueCaptureDescriptorDataExt,
5393
74
                ),
5394
74
                proc: unsafe {
5395
74
                    std::mem::transmute::<
5396
74
                        vk::PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT,
5397
74
                        vk::PFN_vkVoidFunction,
5398
74
                    >(
5399
74
                        Self::get_acceleration_structure_opaque_capture_descriptor_data_ext
5400
74
                    )
5401
74
                },
5402
74
            },
5403
74
            VulkanCommand {
5404
74
                name: "vkGetAndroidHardwareBufferPropertiesANDROID",
5405
74
                features: smallvec![Feature::Extension(
5406
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
5407
0
                )],
5408
74
                hooked: hooked_commands
5409
74
                    .contains(&LayerVulkanCommand::GetAndroidHardwareBufferPropertiesAndroid),
5410
74
                proc: unsafe {
5411
74
                    std::mem::transmute::<
5412
74
                        vk::PFN_vkGetAndroidHardwareBufferPropertiesANDROID,
5413
74
                        vk::PFN_vkVoidFunction,
5414
74
                    >(Self::get_android_hardware_buffer_properties_android)
5415
74
                },
5416
74
            },
5417
74
            VulkanCommand {
5418
74
                name: "vkGetBufferCollectionPropertiesFUCHSIA",
5419
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
5420
74
                hooked: hooked_commands
5421
74
                    .contains(&LayerVulkanCommand::GetBufferCollectionPropertiesFuchsia),
5422
74
                proc: unsafe {
5423
74
                    std::mem::transmute::<
5424
74
                        vk::PFN_vkGetBufferCollectionPropertiesFUCHSIA,
5425
74
                        vk::PFN_vkVoidFunction,
5426
74
                    >(Self::get_buffer_collection_properties_fuchsia)
5427
74
                },
5428
74
            },
5429
74
            VulkanCommand {
5430
74
                name: "vkGetBufferDeviceAddress",
5431
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5432
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5433
74
                proc: unsafe {
5434
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5435
74
                        Self::get_buffer_device_address,
5436
74
                    )
5437
74
                },
5438
74
            },
5439
74
            VulkanCommand {
5440
74
                name: "vkGetBufferDeviceAddressEXT",
5441
74
                features: smallvec![
Feature::Extension(Extension::EXTBufferDeviceAddress)0
],
5442
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5443
74
                proc: unsafe {
5444
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5445
74
                        Self::get_buffer_device_address,
5446
74
                    )
5447
74
                },
5448
74
            },
5449
74
            VulkanCommand {
5450
74
                name: "vkGetBufferDeviceAddressKHR",
5451
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5452
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferDeviceAddress),
5453
74
                proc: unsafe {
5454
74
                    std::mem::transmute::<vk::PFN_vkGetBufferDeviceAddress, vk::PFN_vkVoidFunction>(
5455
74
                        Self::get_buffer_device_address,
5456
74
                    )
5457
74
                },
5458
74
            },
5459
74
            VulkanCommand {
5460
74
                name: "vkGetBufferMemoryRequirements",
5461
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5462
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements),
5463
74
                proc: unsafe {
5464
74
                    std::mem::transmute::<
5465
74
                        vk::PFN_vkGetBufferMemoryRequirements,
5466
74
                        vk::PFN_vkVoidFunction,
5467
74
                    >(Self::get_buffer_memory_requirements)
5468
74
                },
5469
74
            },
5470
74
            VulkanCommand {
5471
74
                name: "vkGetBufferMemoryRequirements2",
5472
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5473
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5474
74
                proc: unsafe {
5475
74
                    std::mem::transmute::<
5476
74
                        vk::PFN_vkGetBufferMemoryRequirements2,
5477
74
                        vk::PFN_vkVoidFunction,
5478
74
                    >(Self::get_buffer_memory_requirements2)
5479
74
                },
5480
74
            },
5481
74
            VulkanCommand {
5482
74
                name: "vkGetBufferMemoryRequirements2KHR",
5483
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5484
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetBufferMemoryRequirements2),
5485
74
                proc: unsafe {
5486
74
                    std::mem::transmute::<
5487
74
                        vk::PFN_vkGetBufferMemoryRequirements2,
5488
74
                        vk::PFN_vkVoidFunction,
5489
74
                    >(Self::get_buffer_memory_requirements2)
5490
74
                },
5491
74
            },
5492
74
            VulkanCommand {
5493
74
                name: "vkGetBufferOpaqueCaptureAddress",
5494
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5495
74
                hooked: hooked_commands
5496
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5497
74
                proc: unsafe {
5498
74
                    std::mem::transmute::<
5499
74
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5500
74
                        vk::PFN_vkVoidFunction,
5501
74
                    >(Self::get_buffer_opaque_capture_address)
5502
74
                },
5503
74
            },
5504
74
            VulkanCommand {
5505
74
                name: "vkGetBufferOpaqueCaptureAddressKHR",
5506
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5507
74
                hooked: hooked_commands
5508
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureAddress),
5509
74
                proc: unsafe {
5510
74
                    std::mem::transmute::<
5511
74
                        vk::PFN_vkGetBufferOpaqueCaptureAddress,
5512
74
                        vk::PFN_vkVoidFunction,
5513
74
                    >(Self::get_buffer_opaque_capture_address)
5514
74
                },
5515
74
            },
5516
74
            VulkanCommand {
5517
74
                name: "vkGetBufferOpaqueCaptureDescriptorDataEXT",
5518
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5519
74
                hooked: hooked_commands
5520
74
                    .contains(&LayerVulkanCommand::GetBufferOpaqueCaptureDescriptorDataExt),
5521
74
                proc: unsafe {
5522
74
                    std::mem::transmute::<
5523
74
                        vk::PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT,
5524
74
                        vk::PFN_vkVoidFunction,
5525
74
                    >(Self::get_buffer_opaque_capture_descriptor_data_ext)
5526
74
                },
5527
74
            },
5528
74
            VulkanCommand {
5529
74
                name: "vkGetCalibratedTimestampsEXT",
5530
74
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
5531
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetCalibratedTimestampsExt),
5532
74
                proc: unsafe {
5533
74
                    std::mem::transmute::<
5534
74
                        vk::PFN_vkGetCalibratedTimestampsEXT,
5535
74
                        vk::PFN_vkVoidFunction,
5536
74
                    >(Self::get_calibrated_timestamps_ext)
5537
74
                },
5538
74
            },
5539
74
            VulkanCommand {
5540
74
                name: "vkGetDeferredOperationMaxConcurrencyKHR",
5541
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5542
74
                hooked: hooked_commands
5543
74
                    .contains(&LayerVulkanCommand::GetDeferredOperationMaxConcurrencyKhr),
5544
74
                proc: unsafe {
5545
74
                    std::mem::transmute::<
5546
74
                        vk::PFN_vkGetDeferredOperationMaxConcurrencyKHR,
5547
74
                        vk::PFN_vkVoidFunction,
5548
74
                    >(Self::get_deferred_operation_max_concurrency_khr)
5549
74
                },
5550
74
            },
5551
74
            VulkanCommand {
5552
74
                name: "vkGetDeferredOperationResultKHR",
5553
74
                features: smallvec![
Feature::Extension(Extension::KHRDeferredHostOperations)0
],
5554
74
                hooked: hooked_commands
5555
74
                    .contains(&LayerVulkanCommand::GetDeferredOperationResultKhr),
5556
74
                proc: unsafe {
5557
74
                    std::mem::transmute::<
5558
74
                        vk::PFN_vkGetDeferredOperationResultKHR,
5559
74
                        vk::PFN_vkVoidFunction,
5560
74
                    >(Self::get_deferred_operation_result_khr)
5561
74
                },
5562
74
            },
5563
74
            VulkanCommand {
5564
74
                name: "vkGetDescriptorEXT",
5565
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5566
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDescriptorExt),
5567
74
                proc: unsafe {
5568
74
                    std::mem::transmute::<vk::PFN_vkGetDescriptorEXT, vk::PFN_vkVoidFunction>(
5569
74
                        Self::get_descriptor_ext,
5570
74
                    )
5571
74
                },
5572
74
            },
5573
74
            VulkanCommand {
5574
74
                name: "vkGetDescriptorSetHostMappingVALVE",
5575
74
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5576
74
                hooked: hooked_commands
5577
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetHostMappingValve),
5578
74
                proc: unsafe {
5579
74
                    std::mem::transmute::<
5580
74
                        vk::PFN_vkGetDescriptorSetHostMappingVALVE,
5581
74
                        vk::PFN_vkVoidFunction,
5582
74
                    >(Self::get_descriptor_set_host_mapping_valve)
5583
74
                },
5584
74
            },
5585
74
            VulkanCommand {
5586
74
                name: "vkGetDescriptorSetLayoutBindingOffsetEXT",
5587
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5588
74
                hooked: hooked_commands
5589
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutBindingOffsetExt),
5590
74
                proc: unsafe {
5591
74
                    std::mem::transmute::<
5592
74
                        vk::PFN_vkGetDescriptorSetLayoutBindingOffsetEXT,
5593
74
                        vk::PFN_vkVoidFunction,
5594
74
                    >(Self::get_descriptor_set_layout_binding_offset_ext)
5595
74
                },
5596
74
            },
5597
74
            VulkanCommand {
5598
74
                name: "vkGetDescriptorSetLayoutHostMappingInfoVALVE",
5599
74
                features: smallvec![
Feature::Extension(Extension::VALVEDescriptorSetHostMapping)0
],
5600
74
                hooked: hooked_commands
5601
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutHostMappingInfoValve),
5602
74
                proc: unsafe {
5603
74
                    std::mem::transmute::<
5604
74
                        vk::PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE,
5605
74
                        vk::PFN_vkVoidFunction,
5606
74
                    >(Self::get_descriptor_set_layout_host_mapping_info_valve)
5607
74
                },
5608
74
            },
5609
74
            VulkanCommand {
5610
74
                name: "vkGetDescriptorSetLayoutSizeEXT",
5611
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
5612
74
                hooked: hooked_commands
5613
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSizeExt),
5614
74
                proc: unsafe {
5615
74
                    std::mem::transmute::<
5616
74
                        vk::PFN_vkGetDescriptorSetLayoutSizeEXT,
5617
74
                        vk::PFN_vkVoidFunction,
5618
74
                    >(Self::get_descriptor_set_layout_size_ext)
5619
74
                },
5620
74
            },
5621
74
            VulkanCommand {
5622
74
                name: "vkGetDescriptorSetLayoutSupport",
5623
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5624
74
                hooked: hooked_commands
5625
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5626
74
                proc: unsafe {
5627
74
                    std::mem::transmute::<
5628
74
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5629
74
                        vk::PFN_vkVoidFunction,
5630
74
                    >(Self::get_descriptor_set_layout_support)
5631
74
                },
5632
74
            },
5633
74
            VulkanCommand {
5634
74
                name: "vkGetDescriptorSetLayoutSupportKHR",
5635
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance3)0
],
5636
74
                hooked: hooked_commands
5637
74
                    .contains(&LayerVulkanCommand::GetDescriptorSetLayoutSupport),
5638
74
                proc: unsafe {
5639
74
                    std::mem::transmute::<
5640
74
                        vk::PFN_vkGetDescriptorSetLayoutSupport,
5641
74
                        vk::PFN_vkVoidFunction,
5642
74
                    >(Self::get_descriptor_set_layout_support)
5643
74
                },
5644
74
            },
5645
74
            VulkanCommand {
5646
74
                name: "vkGetDeviceAccelerationStructureCompatibilityKHR",
5647
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
5648
74
                hooked: hooked_commands
5649
74
                    .contains(&LayerVulkanCommand::GetDeviceAccelerationStructureCompatibilityKhr),
5650
74
                proc: unsafe {
5651
74
                    std::mem::transmute::<
5652
74
                        vk::PFN_vkGetDeviceAccelerationStructureCompatibilityKHR,
5653
74
                        vk::PFN_vkVoidFunction,
5654
74
                    >(Self::get_device_acceleration_structure_compatibility_khr)
5655
74
                },
5656
74
            },
5657
74
            VulkanCommand {
5658
74
                name: "vkGetDeviceBufferMemoryRequirements",
5659
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5660
74
                hooked: hooked_commands
5661
74
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5662
74
                proc: unsafe {
5663
74
                    std::mem::transmute::<
5664
74
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5665
74
                        vk::PFN_vkVoidFunction,
5666
74
                    >(Self::get_device_buffer_memory_requirements)
5667
74
                },
5668
74
            },
5669
74
            VulkanCommand {
5670
74
                name: "vkGetDeviceBufferMemoryRequirementsKHR",
5671
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5672
74
                hooked: hooked_commands
5673
74
                    .contains(&LayerVulkanCommand::GetDeviceBufferMemoryRequirements),
5674
74
                proc: unsafe {
5675
74
                    std::mem::transmute::<
5676
74
                        vk::PFN_vkGetDeviceBufferMemoryRequirements,
5677
74
                        vk::PFN_vkVoidFunction,
5678
74
                    >(Self::get_device_buffer_memory_requirements)
5679
74
                },
5680
74
            },
5681
74
            VulkanCommand {
5682
74
                name: "vkGetDeviceGroupPeerMemoryFeatures",
5683
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5684
74
                hooked: hooked_commands
5685
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5686
74
                proc: unsafe {
5687
74
                    std::mem::transmute::<
5688
74
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5689
74
                        vk::PFN_vkVoidFunction,
5690
74
                    >(Self::get_device_group_peer_memory_features)
5691
74
                },
5692
74
            },
5693
74
            VulkanCommand {
5694
74
                name: "vkGetDeviceGroupPeerMemoryFeaturesKHR",
5695
74
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroup)0
],
5696
74
                hooked: hooked_commands
5697
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPeerMemoryFeatures),
5698
74
                proc: unsafe {
5699
74
                    std::mem::transmute::<
5700
74
                        vk::PFN_vkGetDeviceGroupPeerMemoryFeatures,
5701
74
                        vk::PFN_vkVoidFunction,
5702
74
                    >(Self::get_device_group_peer_memory_features)
5703
74
                },
5704
74
            },
5705
74
            VulkanCommand {
5706
74
                name: "vkGetDeviceGroupPresentCapabilitiesKHR",
5707
74
                features: smallvec![
5708
0
                    Feature::Extension(Extension::KHRSwapchain),
5709
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5710
                ],
5711
74
                hooked: hooked_commands
5712
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupPresentCapabilitiesKhr),
5713
74
                proc: unsafe {
5714
74
                    std::mem::transmute::<
5715
74
                        vk::PFN_vkGetDeviceGroupPresentCapabilitiesKHR,
5716
74
                        vk::PFN_vkVoidFunction,
5717
74
                    >(Self::get_device_group_present_capabilities_khr)
5718
74
                },
5719
74
            },
5720
74
            VulkanCommand {
5721
74
                name: "vkGetDeviceGroupSurfacePresentModes2EXT",
5722
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
5723
74
                hooked: hooked_commands
5724
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModes2Ext),
5725
74
                proc: unsafe {
5726
74
                    std::mem::transmute::<
5727
74
                        vk::PFN_vkGetDeviceGroupSurfacePresentModes2EXT,
5728
74
                        vk::PFN_vkVoidFunction,
5729
74
                    >(Self::get_device_group_surface_present_modes2_ext)
5730
74
                },
5731
74
            },
5732
74
            VulkanCommand {
5733
74
                name: "vkGetDeviceGroupSurfacePresentModesKHR",
5734
74
                features: smallvec![
5735
0
                    Feature::Extension(Extension::KHRSwapchain),
5736
0
                    Feature::Extension(Extension::KHRDeviceGroup)
5737
                ],
5738
74
                hooked: hooked_commands
5739
74
                    .contains(&LayerVulkanCommand::GetDeviceGroupSurfacePresentModesKhr),
5740
74
                proc: unsafe {
5741
74
                    std::mem::transmute::<
5742
74
                        vk::PFN_vkGetDeviceGroupSurfacePresentModesKHR,
5743
74
                        vk::PFN_vkVoidFunction,
5744
74
                    >(Self::get_device_group_surface_present_modes_khr)
5745
74
                },
5746
74
            },
5747
74
            VulkanCommand {
5748
74
                name: "vkGetDeviceImageMemoryRequirements",
5749
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5750
74
                hooked: hooked_commands
5751
74
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5752
74
                proc: unsafe {
5753
74
                    std::mem::transmute::<
5754
74
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5755
74
                        vk::PFN_vkVoidFunction,
5756
74
                    >(Self::get_device_image_memory_requirements)
5757
74
                },
5758
74
            },
5759
74
            VulkanCommand {
5760
74
                name: "vkGetDeviceImageMemoryRequirementsKHR",
5761
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5762
74
                hooked: hooked_commands
5763
74
                    .contains(&LayerVulkanCommand::GetDeviceImageMemoryRequirements),
5764
74
                proc: unsafe {
5765
74
                    std::mem::transmute::<
5766
74
                        vk::PFN_vkGetDeviceImageMemoryRequirements,
5767
74
                        vk::PFN_vkVoidFunction,
5768
74
                    >(Self::get_device_image_memory_requirements)
5769
74
                },
5770
74
            },
5771
74
            VulkanCommand {
5772
74
                name: "vkGetDeviceImageSparseMemoryRequirements",
5773
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
5774
74
                hooked: hooked_commands
5775
74
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5776
74
                proc: unsafe {
5777
74
                    std::mem::transmute::<
5778
74
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5779
74
                        vk::PFN_vkVoidFunction,
5780
74
                    >(Self::get_device_image_sparse_memory_requirements)
5781
74
                },
5782
74
            },
5783
74
            VulkanCommand {
5784
74
                name: "vkGetDeviceImageSparseMemoryRequirementsKHR",
5785
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance4)0
],
5786
74
                hooked: hooked_commands
5787
74
                    .contains(&LayerVulkanCommand::GetDeviceImageSparseMemoryRequirements),
5788
74
                proc: unsafe {
5789
74
                    std::mem::transmute::<
5790
74
                        vk::PFN_vkGetDeviceImageSparseMemoryRequirements,
5791
74
                        vk::PFN_vkVoidFunction,
5792
74
                    >(Self::get_device_image_sparse_memory_requirements)
5793
74
                },
5794
74
            },
5795
74
            VulkanCommand {
5796
74
                name: "vkGetDeviceMemoryCommitment",
5797
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5798
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceMemoryCommitment),
5799
74
                proc: unsafe {
5800
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceMemoryCommitment, vk::PFN_vkVoidFunction>(
5801
74
                        Self::get_device_memory_commitment,
5802
74
                    )
5803
74
                },
5804
74
            },
5805
74
            VulkanCommand {
5806
74
                name: "vkGetDeviceMemoryOpaqueCaptureAddress",
5807
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
5808
74
                hooked: hooked_commands
5809
74
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5810
74
                proc: unsafe {
5811
74
                    std::mem::transmute::<
5812
74
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5813
74
                        vk::PFN_vkVoidFunction,
5814
74
                    >(Self::get_device_memory_opaque_capture_address)
5815
74
                },
5816
74
            },
5817
74
            VulkanCommand {
5818
74
                name: "vkGetDeviceMemoryOpaqueCaptureAddressKHR",
5819
74
                features: smallvec![
Feature::Extension(Extension::KHRBufferDeviceAddress)0
],
5820
74
                hooked: hooked_commands
5821
74
                    .contains(&LayerVulkanCommand::GetDeviceMemoryOpaqueCaptureAddress),
5822
74
                proc: unsafe {
5823
74
                    std::mem::transmute::<
5824
74
                        vk::PFN_vkGetDeviceMemoryOpaqueCaptureAddress,
5825
74
                        vk::PFN_vkVoidFunction,
5826
74
                    >(Self::get_device_memory_opaque_capture_address)
5827
74
                },
5828
74
            },
5829
74
            VulkanCommand {
5830
74
                name: "vkGetDeviceMicromapCompatibilityEXT",
5831
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
5832
74
                hooked: hooked_commands
5833
74
                    .contains(&LayerVulkanCommand::GetDeviceMicromapCompatibilityExt),
5834
74
                proc: unsafe {
5835
74
                    std::mem::transmute::<
5836
74
                        vk::PFN_vkGetDeviceMicromapCompatibilityEXT,
5837
74
                        vk::PFN_vkVoidFunction,
5838
74
                    >(Self::get_device_micromap_compatibility_ext)
5839
74
                },
5840
74
            },
5841
74
            VulkanCommand {
5842
74
                name: "vkGetDeviceProcAddr",
5843
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5844
                hooked: true,
5845
                proc: unsafe {
5846
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceProcAddr, vk::PFN_vkVoidFunction>(
5847
74
                        Self::get_device_proc_addr,
5848
74
                    )
5849
74
                },
5850
74
            },
5851
74
            VulkanCommand {
5852
74
                name: "vkGetDeviceQueue",
5853
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5854
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue),
5855
74
                proc: unsafe {
5856
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue, vk::PFN_vkVoidFunction>(
5857
74
                        Self::get_device_queue,
5858
74
                    )
5859
74
                },
5860
74
            },
5861
74
            VulkanCommand {
5862
74
                name: "vkGetDeviceQueue2",
5863
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5864
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDeviceQueue2),
5865
74
                proc: unsafe {
5866
74
                    std::mem::transmute::<vk::PFN_vkGetDeviceQueue2, vk::PFN_vkVoidFunction>(
5867
74
                        Self::get_device_queue2,
5868
74
                    )
5869
74
                },
5870
74
            },
5871
74
            VulkanCommand {
5872
74
                name: "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI",
5873
74
                features: smallvec![
Feature::Extension(Extension::HUAWEISubpassShading)0
],
5874
74
                hooked: hooked_commands
5875
74
                    .contains(&LayerVulkanCommand::GetDeviceSubpassShadingMaxWorkgroupSizeHuawei),
5876
74
                proc: unsafe {
5877
74
                    std::mem::transmute::<
5878
74
                        vk::PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI,
5879
74
                        vk::PFN_vkVoidFunction,
5880
74
                    >(Self::get_device_subpass_shading_max_workgroup_size_huawei)
5881
74
                },
5882
74
            },
5883
74
            VulkanCommand {
5884
74
                name: "vkGetDynamicRenderingTilePropertiesQCOM",
5885
74
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5886
74
                hooked: hooked_commands
5887
74
                    .contains(&LayerVulkanCommand::GetDynamicRenderingTilePropertiesQcom),
5888
74
                proc: unsafe {
5889
74
                    std::mem::transmute::<
5890
74
                        vk::PFN_vkGetDynamicRenderingTilePropertiesQCOM,
5891
74
                        vk::PFN_vkVoidFunction,
5892
74
                    >(Self::get_dynamic_rendering_tile_properties_qcom)
5893
74
                },
5894
74
            },
5895
74
            VulkanCommand {
5896
74
                name: "vkGetEventStatus",
5897
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5898
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetEventStatus),
5899
74
                proc: unsafe {
5900
74
                    std::mem::transmute::<vk::PFN_vkGetEventStatus, vk::PFN_vkVoidFunction>(
5901
74
                        Self::get_event_status,
5902
74
                    )
5903
74
                },
5904
74
            },
5905
74
            VulkanCommand {
5906
74
                name: "vkGetFenceFdKHR",
5907
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
5908
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceFdKhr),
5909
74
                proc: unsafe {
5910
74
                    std::mem::transmute::<vk::PFN_vkGetFenceFdKHR, vk::PFN_vkVoidFunction>(
5911
74
                        Self::get_fence_fd_khr,
5912
74
                    )
5913
74
                },
5914
74
            },
5915
74
            VulkanCommand {
5916
74
                name: "vkGetFenceStatus",
5917
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5918
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceStatus),
5919
74
                proc: unsafe {
5920
74
                    std::mem::transmute::<vk::PFN_vkGetFenceStatus, vk::PFN_vkVoidFunction>(
5921
74
                        Self::get_fence_status,
5922
74
                    )
5923
74
                },
5924
74
            },
5925
74
            VulkanCommand {
5926
74
                name: "vkGetFenceWin32HandleKHR",
5927
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
5928
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetFenceWin32HandleKhr),
5929
74
                proc: unsafe {
5930
74
                    std::mem::transmute::<vk::PFN_vkGetFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
5931
74
                        Self::get_fence_win32_handle_khr,
5932
74
                    )
5933
74
                },
5934
74
            },
5935
74
            VulkanCommand {
5936
74
                name: "vkGetFramebufferTilePropertiesQCOM",
5937
74
                features: smallvec![
Feature::Extension(Extension::QCOMTileProperties)0
],
5938
74
                hooked: hooked_commands
5939
74
                    .contains(&LayerVulkanCommand::GetFramebufferTilePropertiesQcom),
5940
74
                proc: unsafe {
5941
74
                    std::mem::transmute::<
5942
74
                        vk::PFN_vkGetFramebufferTilePropertiesQCOM,
5943
74
                        vk::PFN_vkVoidFunction,
5944
74
                    >(Self::get_framebuffer_tile_properties_qcom)
5945
74
                },
5946
74
            },
5947
74
            VulkanCommand {
5948
74
                name: "vkGetGeneratedCommandsMemoryRequirementsNV",
5949
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceGeneratedCommands)0
],
5950
74
                hooked: hooked_commands
5951
74
                    .contains(&LayerVulkanCommand::GetGeneratedCommandsMemoryRequirementsNv),
5952
74
                proc: unsafe {
5953
74
                    std::mem::transmute::<
5954
74
                        vk::PFN_vkGetGeneratedCommandsMemoryRequirementsNV,
5955
74
                        vk::PFN_vkVoidFunction,
5956
74
                    >(Self::get_generated_commands_memory_requirements_nv)
5957
74
                },
5958
74
            },
5959
74
            VulkanCommand {
5960
74
                name: "vkGetImageDrmFormatModifierPropertiesEXT",
5961
74
                features: smallvec![
Feature::Extension(Extension::EXTImageDrmFormatModifier)0
],
5962
74
                hooked: hooked_commands
5963
74
                    .contains(&LayerVulkanCommand::GetImageDrmFormatModifierPropertiesExt),
5964
74
                proc: unsafe {
5965
74
                    std::mem::transmute::<
5966
74
                        vk::PFN_vkGetImageDrmFormatModifierPropertiesEXT,
5967
74
                        vk::PFN_vkVoidFunction,
5968
74
                    >(Self::get_image_drm_format_modifier_properties_ext)
5969
74
                },
5970
74
            },
5971
74
            VulkanCommand {
5972
74
                name: "vkGetImageMemoryRequirements",
5973
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
5974
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements),
5975
74
                proc: unsafe {
5976
74
                    std::mem::transmute::<
5977
74
                        vk::PFN_vkGetImageMemoryRequirements,
5978
74
                        vk::PFN_vkVoidFunction,
5979
74
                    >(Self::get_image_memory_requirements)
5980
74
                },
5981
74
            },
5982
74
            VulkanCommand {
5983
74
                name: "vkGetImageMemoryRequirements2",
5984
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
5985
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5986
74
                proc: unsafe {
5987
74
                    std::mem::transmute::<
5988
74
                        vk::PFN_vkGetImageMemoryRequirements2,
5989
74
                        vk::PFN_vkVoidFunction,
5990
74
                    >(Self::get_image_memory_requirements2)
5991
74
                },
5992
74
            },
5993
74
            VulkanCommand {
5994
74
                name: "vkGetImageMemoryRequirements2KHR",
5995
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
5996
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageMemoryRequirements2),
5997
74
                proc: unsafe {
5998
74
                    std::mem::transmute::<
5999
74
                        vk::PFN_vkGetImageMemoryRequirements2,
6000
74
                        vk::PFN_vkVoidFunction,
6001
74
                    >(Self::get_image_memory_requirements2)
6002
74
                },
6003
74
            },
6004
74
            VulkanCommand {
6005
74
                name: "vkGetImageOpaqueCaptureDescriptorDataEXT",
6006
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6007
74
                hooked: hooked_commands
6008
74
                    .contains(&LayerVulkanCommand::GetImageOpaqueCaptureDescriptorDataExt),
6009
74
                proc: unsafe {
6010
74
                    std::mem::transmute::<
6011
74
                        vk::PFN_vkGetImageOpaqueCaptureDescriptorDataEXT,
6012
74
                        vk::PFN_vkVoidFunction,
6013
74
                    >(Self::get_image_opaque_capture_descriptor_data_ext)
6014
74
                },
6015
74
            },
6016
74
            VulkanCommand {
6017
74
                name: "vkGetImageSparseMemoryRequirements",
6018
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6019
74
                hooked: hooked_commands
6020
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements),
6021
74
                proc: unsafe {
6022
74
                    std::mem::transmute::<
6023
74
                        vk::PFN_vkGetImageSparseMemoryRequirements,
6024
74
                        vk::PFN_vkVoidFunction,
6025
74
                    >(Self::get_image_sparse_memory_requirements)
6026
74
                },
6027
74
            },
6028
74
            VulkanCommand {
6029
74
                name: "vkGetImageSparseMemoryRequirements2",
6030
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
6031
74
                hooked: hooked_commands
6032
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6033
74
                proc: unsafe {
6034
74
                    std::mem::transmute::<
6035
74
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6036
74
                        vk::PFN_vkVoidFunction,
6037
74
                    >(Self::get_image_sparse_memory_requirements2)
6038
74
                },
6039
74
            },
6040
74
            VulkanCommand {
6041
74
                name: "vkGetImageSparseMemoryRequirements2KHR",
6042
74
                features: smallvec![
Feature::Extension(Extension::KHRGetMemoryRequirements2)0
],
6043
74
                hooked: hooked_commands
6044
74
                    .contains(&LayerVulkanCommand::GetImageSparseMemoryRequirements2),
6045
74
                proc: unsafe {
6046
74
                    std::mem::transmute::<
6047
74
                        vk::PFN_vkGetImageSparseMemoryRequirements2,
6048
74
                        vk::PFN_vkVoidFunction,
6049
74
                    >(Self::get_image_sparse_memory_requirements2)
6050
74
                },
6051
74
            },
6052
74
            VulkanCommand {
6053
74
                name: "vkGetImageSubresourceLayout",
6054
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6055
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageSubresourceLayout),
6056
74
                proc: unsafe {
6057
74
                    std::mem::transmute::<vk::PFN_vkGetImageSubresourceLayout, vk::PFN_vkVoidFunction>(
6058
74
                        Self::get_image_subresource_layout,
6059
74
                    )
6060
74
                },
6061
74
            },
6062
74
            VulkanCommand {
6063
74
                name: "vkGetImageSubresourceLayout2EXT",
6064
74
                features: smallvec![
Feature::Extension(Extension::EXTImageCompressionControl)0
],
6065
74
                hooked: hooked_commands
6066
74
                    .contains(&LayerVulkanCommand::GetImageSubresourceLayout2Ext),
6067
74
                proc: unsafe {
6068
74
                    std::mem::transmute::<
6069
74
                        vk::PFN_vkGetImageSubresourceLayout2EXT,
6070
74
                        vk::PFN_vkVoidFunction,
6071
74
                    >(Self::get_image_subresource_layout2_ext)
6072
74
                },
6073
74
            },
6074
74
            VulkanCommand {
6075
74
                name: "vkGetImageViewAddressNVX",
6076
74
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6077
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewAddressNvx),
6078
74
                proc: unsafe {
6079
74
                    std::mem::transmute::<vk::PFN_vkGetImageViewAddressNVX, vk::PFN_vkVoidFunction>(
6080
74
                        Self::get_image_view_address_nvx,
6081
74
                    )
6082
74
                },
6083
74
            },
6084
74
            VulkanCommand {
6085
74
                name: "vkGetImageViewHandleNVX",
6086
74
                features: smallvec![
Feature::Extension(Extension::NVXImageViewHandle)0
],
6087
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetImageViewHandleNvx),
6088
74
                proc: unsafe {
6089
74
                    std::mem::transmute::<vk::PFN_vkGetImageViewHandleNVX, vk::PFN_vkVoidFunction>(
6090
74
                        Self::get_image_view_handle_nvx,
6091
74
                    )
6092
74
                },
6093
74
            },
6094
74
            VulkanCommand {
6095
74
                name: "vkGetImageViewOpaqueCaptureDescriptorDataEXT",
6096
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6097
74
                hooked: hooked_commands
6098
74
                    .contains(&LayerVulkanCommand::GetImageViewOpaqueCaptureDescriptorDataExt),
6099
74
                proc: unsafe {
6100
74
                    std::mem::transmute::<
6101
74
                        vk::PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT,
6102
74
                        vk::PFN_vkVoidFunction,
6103
74
                    >(Self::get_image_view_opaque_capture_descriptor_data_ext)
6104
74
                },
6105
74
            },
6106
74
            VulkanCommand {
6107
74
                name: "vkGetMemoryAndroidHardwareBufferANDROID",
6108
74
                features: smallvec![Feature::Extension(
6109
0
                    Extension::ANDROIDExternalMemoryAndroidHardwareBuffer
6110
0
                )],
6111
74
                hooked: hooked_commands
6112
74
                    .contains(&LayerVulkanCommand::GetMemoryAndroidHardwareBufferAndroid),
6113
74
                proc: unsafe {
6114
74
                    std::mem::transmute::<
6115
74
                        vk::PFN_vkGetMemoryAndroidHardwareBufferANDROID,
6116
74
                        vk::PFN_vkVoidFunction,
6117
74
                    >(Self::get_memory_android_hardware_buffer_android)
6118
74
                },
6119
74
            },
6120
74
            VulkanCommand {
6121
74
                name: "vkGetMemoryFdKHR",
6122
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6123
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdKhr),
6124
74
                proc: unsafe {
6125
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdKHR, vk::PFN_vkVoidFunction>(
6126
74
                        Self::get_memory_fd_khr,
6127
74
                    )
6128
74
                },
6129
74
            },
6130
74
            VulkanCommand {
6131
74
                name: "vkGetMemoryFdPropertiesKHR",
6132
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryFd)0
],
6133
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryFdPropertiesKhr),
6134
74
                proc: unsafe {
6135
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryFdPropertiesKHR, vk::PFN_vkVoidFunction>(
6136
74
                        Self::get_memory_fd_properties_khr,
6137
74
                    )
6138
74
                },
6139
74
            },
6140
74
            VulkanCommand {
6141
74
                name: "vkGetMemoryHostPointerPropertiesEXT",
6142
74
                features: smallvec![
Feature::Extension(Extension::EXTExternalMemoryHost)0
],
6143
74
                hooked: hooked_commands
6144
74
                    .contains(&LayerVulkanCommand::GetMemoryHostPointerPropertiesExt),
6145
74
                proc: unsafe {
6146
74
                    std::mem::transmute::<
6147
74
                        vk::PFN_vkGetMemoryHostPointerPropertiesEXT,
6148
74
                        vk::PFN_vkVoidFunction,
6149
74
                    >(Self::get_memory_host_pointer_properties_ext)
6150
74
                },
6151
74
            },
6152
74
            VulkanCommand {
6153
74
                name: "vkGetMemoryRemoteAddressNV",
6154
74
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryRdma)0
],
6155
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryRemoteAddressNv),
6156
74
                proc: unsafe {
6157
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryRemoteAddressNV, vk::PFN_vkVoidFunction>(
6158
74
                        Self::get_memory_remote_address_nv,
6159
74
                    )
6160
74
                },
6161
74
            },
6162
74
            VulkanCommand {
6163
74
                name: "vkGetMemoryWin32HandleKHR",
6164
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6165
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleKhr),
6166
74
                proc: unsafe {
6167
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleKHR, vk::PFN_vkVoidFunction>(
6168
74
                        Self::get_memory_win32_handle_khr,
6169
74
                    )
6170
74
                },
6171
74
            },
6172
74
            VulkanCommand {
6173
74
                name: "vkGetMemoryWin32HandleNV",
6174
74
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryWin32)0
],
6175
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryWin32HandleNv),
6176
74
                proc: unsafe {
6177
74
                    std::mem::transmute::<vk::PFN_vkGetMemoryWin32HandleNV, vk::PFN_vkVoidFunction>(
6178
74
                        Self::get_memory_win32_handle_nv,
6179
74
                    )
6180
74
                },
6181
74
            },
6182
74
            VulkanCommand {
6183
74
                name: "vkGetMemoryWin32HandlePropertiesKHR",
6184
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryWin32)0
],
6185
74
                hooked: hooked_commands
6186
74
                    .contains(&LayerVulkanCommand::GetMemoryWin32HandlePropertiesKhr),
6187
74
                proc: unsafe {
6188
74
                    std::mem::transmute::<
6189
74
                        vk::PFN_vkGetMemoryWin32HandlePropertiesKHR,
6190
74
                        vk::PFN_vkVoidFunction,
6191
74
                    >(Self::get_memory_win32_handle_properties_khr)
6192
74
                },
6193
74
            },
6194
74
            VulkanCommand {
6195
74
                name: "vkGetMemoryZirconHandleFUCHSIA",
6196
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6197
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMemoryZirconHandleFuchsia),
6198
74
                proc: unsafe {
6199
74
                    std::mem::transmute::<
6200
74
                        vk::PFN_vkGetMemoryZirconHandleFUCHSIA,
6201
74
                        vk::PFN_vkVoidFunction,
6202
74
                    >(Self::get_memory_zircon_handle_fuchsia)
6203
74
                },
6204
74
            },
6205
74
            VulkanCommand {
6206
74
                name: "vkGetMemoryZirconHandlePropertiesFUCHSIA",
6207
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalMemory)0
],
6208
74
                hooked: hooked_commands
6209
74
                    .contains(&LayerVulkanCommand::GetMemoryZirconHandlePropertiesFuchsia),
6210
74
                proc: unsafe {
6211
74
                    std::mem::transmute::<
6212
74
                        vk::PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA,
6213
74
                        vk::PFN_vkVoidFunction,
6214
74
                    >(Self::get_memory_zircon_handle_properties_fuchsia)
6215
74
                },
6216
74
            },
6217
74
            VulkanCommand {
6218
74
                name: "vkGetMicromapBuildSizesEXT",
6219
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
6220
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetMicromapBuildSizesExt),
6221
74
                proc: unsafe {
6222
74
                    std::mem::transmute::<vk::PFN_vkGetMicromapBuildSizesEXT, vk::PFN_vkVoidFunction>(
6223
74
                        Self::get_micromap_build_sizes_ext,
6224
74
                    )
6225
74
                },
6226
74
            },
6227
74
            VulkanCommand {
6228
74
                name: "vkGetPastPresentationTimingGOOGLE",
6229
74
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6230
74
                hooked: hooked_commands
6231
74
                    .contains(&LayerVulkanCommand::GetPastPresentationTimingGoogle),
6232
74
                proc: unsafe {
6233
74
                    std::mem::transmute::<
6234
74
                        vk::PFN_vkGetPastPresentationTimingGOOGLE,
6235
74
                        vk::PFN_vkVoidFunction,
6236
74
                    >(Self::get_past_presentation_timing_google)
6237
74
                },
6238
74
            },
6239
74
            VulkanCommand {
6240
74
                name: "vkGetPerformanceParameterINTEL",
6241
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6242
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPerformanceParameterIntel),
6243
74
                proc: unsafe {
6244
74
                    std::mem::transmute::<
6245
74
                        vk::PFN_vkGetPerformanceParameterINTEL,
6246
74
                        vk::PFN_vkVoidFunction,
6247
74
                    >(Self::get_performance_parameter_intel)
6248
74
                },
6249
74
            },
6250
74
            VulkanCommand {
6251
74
                name: "vkGetPipelineCacheData",
6252
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6253
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelineCacheData),
6254
74
                proc: unsafe {
6255
74
                    std::mem::transmute::<vk::PFN_vkGetPipelineCacheData, vk::PFN_vkVoidFunction>(
6256
74
                        Self::get_pipeline_cache_data,
6257
74
                    )
6258
74
                },
6259
74
            },
6260
74
            VulkanCommand {
6261
74
                name: "vkGetPipelineExecutableInternalRepresentationsKHR",
6262
74
                features: smallvec![Feature::Extension(
6263
0
                    Extension::KHRPipelineExecutableProperties
6264
0
                )],
6265
74
                hooked: hooked_commands
6266
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutableInternalRepresentationsKhr),
6267
74
                proc: unsafe {
6268
74
                    std::mem::transmute::<
6269
74
                        vk::PFN_vkGetPipelineExecutableInternalRepresentationsKHR,
6270
74
                        vk::PFN_vkVoidFunction,
6271
74
                    >(Self::get_pipeline_executable_internal_representations_khr)
6272
74
                },
6273
74
            },
6274
74
            VulkanCommand {
6275
74
                name: "vkGetPipelineExecutablePropertiesKHR",
6276
74
                features: smallvec![Feature::Extension(
6277
0
                    Extension::KHRPipelineExecutableProperties
6278
0
                )],
6279
74
                hooked: hooked_commands
6280
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutablePropertiesKhr),
6281
74
                proc: unsafe {
6282
74
                    std::mem::transmute::<
6283
74
                        vk::PFN_vkGetPipelineExecutablePropertiesKHR,
6284
74
                        vk::PFN_vkVoidFunction,
6285
74
                    >(Self::get_pipeline_executable_properties_khr)
6286
74
                },
6287
74
            },
6288
74
            VulkanCommand {
6289
74
                name: "vkGetPipelineExecutableStatisticsKHR",
6290
74
                features: smallvec![Feature::Extension(
6291
0
                    Extension::KHRPipelineExecutableProperties
6292
0
                )],
6293
74
                hooked: hooked_commands
6294
74
                    .contains(&LayerVulkanCommand::GetPipelineExecutableStatisticsKhr),
6295
74
                proc: unsafe {
6296
74
                    std::mem::transmute::<
6297
74
                        vk::PFN_vkGetPipelineExecutableStatisticsKHR,
6298
74
                        vk::PFN_vkVoidFunction,
6299
74
                    >(Self::get_pipeline_executable_statistics_khr)
6300
74
                },
6301
74
            },
6302
74
            VulkanCommand {
6303
74
                name: "vkGetPipelinePropertiesEXT",
6304
74
                features: smallvec![
Feature::Extension(Extension::EXTPipelineProperties)0
],
6305
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPipelinePropertiesExt),
6306
74
                proc: unsafe {
6307
74
                    std::mem::transmute::<vk::PFN_vkGetPipelinePropertiesEXT, vk::PFN_vkVoidFunction>(
6308
74
                        Self::get_pipeline_properties_ext,
6309
74
                    )
6310
74
                },
6311
74
            },
6312
74
            VulkanCommand {
6313
74
                name: "vkGetPrivateData",
6314
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6315
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6316
74
                proc: unsafe {
6317
74
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6318
74
                        Self::get_private_data,
6319
74
                    )
6320
74
                },
6321
74
            },
6322
74
            VulkanCommand {
6323
74
                name: "vkGetPrivateDataEXT",
6324
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
6325
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPrivateData),
6326
74
                proc: unsafe {
6327
74
                    std::mem::transmute::<vk::PFN_vkGetPrivateData, vk::PFN_vkVoidFunction>(
6328
74
                        Self::get_private_data,
6329
74
                    )
6330
74
                },
6331
74
            },
6332
74
            VulkanCommand {
6333
74
                name: "vkGetQueryPoolResults",
6334
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6335
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueryPoolResults),
6336
74
                proc: unsafe {
6337
74
                    std::mem::transmute::<vk::PFN_vkGetQueryPoolResults, vk::PFN_vkVoidFunction>(
6338
74
                        Self::get_query_pool_results,
6339
74
                    )
6340
74
                },
6341
74
            },
6342
74
            VulkanCommand {
6343
74
                name: "vkGetQueueCheckpointData2NV",
6344
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6345
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointData2Nv),
6346
74
                proc: unsafe {
6347
74
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointData2NV, vk::PFN_vkVoidFunction>(
6348
74
                        Self::get_queue_checkpoint_data2_nv,
6349
74
                    )
6350
74
                },
6351
74
            },
6352
74
            VulkanCommand {
6353
74
                name: "vkGetQueueCheckpointDataNV",
6354
74
                features: smallvec![
Feature::Extension(Extension::NVDeviceDiagnosticCheckpoints)0
],
6355
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetQueueCheckpointDataNv),
6356
74
                proc: unsafe {
6357
74
                    std::mem::transmute::<vk::PFN_vkGetQueueCheckpointDataNV, vk::PFN_vkVoidFunction>(
6358
74
                        Self::get_queue_checkpoint_data_nv,
6359
74
                    )
6360
74
                },
6361
74
            },
6362
74
            VulkanCommand {
6363
74
                name: "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR",
6364
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6365
74
                hooked: hooked_commands
6366
74
                    .contains(&LayerVulkanCommand::GetRayTracingCaptureReplayShaderGroupHandlesKhr),
6367
74
                proc: unsafe {
6368
74
                    std::mem::transmute::<
6369
74
                        vk::PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR,
6370
74
                        vk::PFN_vkVoidFunction,
6371
74
                    >(
6372
74
                        Self::get_ray_tracing_capture_replay_shader_group_handles_khr
6373
74
                    )
6374
74
                },
6375
74
            },
6376
74
            VulkanCommand {
6377
74
                name: "vkGetRayTracingShaderGroupHandlesKHR",
6378
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6379
74
                hooked: hooked_commands
6380
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6381
74
                proc: unsafe {
6382
74
                    std::mem::transmute::<
6383
74
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6384
74
                        vk::PFN_vkVoidFunction,
6385
74
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6386
74
                },
6387
74
            },
6388
74
            VulkanCommand {
6389
74
                name: "vkGetRayTracingShaderGroupHandlesNV",
6390
74
                features: smallvec![
Feature::Extension(Extension::NVRayTracing)0
],
6391
74
                hooked: hooked_commands
6392
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupHandlesKhr),
6393
74
                proc: unsafe {
6394
74
                    std::mem::transmute::<
6395
74
                        vk::PFN_vkGetRayTracingShaderGroupHandlesKHR,
6396
74
                        vk::PFN_vkVoidFunction,
6397
74
                    >(Self::get_ray_tracing_shader_group_handles_khr)
6398
74
                },
6399
74
            },
6400
74
            VulkanCommand {
6401
74
                name: "vkGetRayTracingShaderGroupStackSizeKHR",
6402
74
                features: smallvec![
Feature::Extension(Extension::KHRRayTracingPipeline)0
],
6403
74
                hooked: hooked_commands
6404
74
                    .contains(&LayerVulkanCommand::GetRayTracingShaderGroupStackSizeKhr),
6405
74
                proc: unsafe {
6406
74
                    std::mem::transmute::<
6407
74
                        vk::PFN_vkGetRayTracingShaderGroupStackSizeKHR,
6408
74
                        vk::PFN_vkVoidFunction,
6409
74
                    >(Self::get_ray_tracing_shader_group_stack_size_khr)
6410
74
                },
6411
74
            },
6412
74
            VulkanCommand {
6413
74
                name: "vkGetRefreshCycleDurationGOOGLE",
6414
74
                features: smallvec![
Feature::Extension(Extension::GOOGLEDisplayTiming)0
],
6415
74
                hooked: hooked_commands
6416
74
                    .contains(&LayerVulkanCommand::GetRefreshCycleDurationGoogle),
6417
74
                proc: unsafe {
6418
74
                    std::mem::transmute::<
6419
74
                        vk::PFN_vkGetRefreshCycleDurationGOOGLE,
6420
74
                        vk::PFN_vkVoidFunction,
6421
74
                    >(Self::get_refresh_cycle_duration_google)
6422
74
                },
6423
74
            },
6424
74
            VulkanCommand {
6425
74
                name: "vkGetRenderAreaGranularity",
6426
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6427
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRenderAreaGranularity),
6428
74
                proc: unsafe {
6429
74
                    std::mem::transmute::<vk::PFN_vkGetRenderAreaGranularity, vk::PFN_vkVoidFunction>(
6430
74
                        Self::get_render_area_granularity,
6431
74
                    )
6432
74
                },
6433
74
            },
6434
74
            VulkanCommand {
6435
74
                name: "vkGetSamplerOpaqueCaptureDescriptorDataEXT",
6436
74
                features: smallvec![
Feature::Extension(Extension::EXTDescriptorBuffer)0
],
6437
74
                hooked: hooked_commands
6438
74
                    .contains(&LayerVulkanCommand::GetSamplerOpaqueCaptureDescriptorDataExt),
6439
74
                proc: unsafe {
6440
74
                    std::mem::transmute::<
6441
74
                        vk::PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT,
6442
74
                        vk::PFN_vkVoidFunction,
6443
74
                    >(Self::get_sampler_opaque_capture_descriptor_data_ext)
6444
74
                },
6445
74
            },
6446
74
            VulkanCommand {
6447
74
                name: "vkGetSemaphoreCounterValue",
6448
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6449
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6450
74
                proc: unsafe {
6451
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6452
74
                        Self::get_semaphore_counter_value,
6453
74
                    )
6454
74
                },
6455
74
            },
6456
74
            VulkanCommand {
6457
74
                name: "vkGetSemaphoreCounterValueKHR",
6458
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
6459
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreCounterValue),
6460
74
                proc: unsafe {
6461
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreCounterValue, vk::PFN_vkVoidFunction>(
6462
74
                        Self::get_semaphore_counter_value,
6463
74
                    )
6464
74
                },
6465
74
            },
6466
74
            VulkanCommand {
6467
74
                name: "vkGetSemaphoreFdKHR",
6468
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6469
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreFdKhr),
6470
74
                proc: unsafe {
6471
74
                    std::mem::transmute::<vk::PFN_vkGetSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6472
74
                        Self::get_semaphore_fd_khr,
6473
74
                    )
6474
74
                },
6475
74
            },
6476
74
            VulkanCommand {
6477
74
                name: "vkGetSemaphoreWin32HandleKHR",
6478
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6479
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSemaphoreWin32HandleKhr),
6480
74
                proc: unsafe {
6481
74
                    std::mem::transmute::<
6482
74
                        vk::PFN_vkGetSemaphoreWin32HandleKHR,
6483
74
                        vk::PFN_vkVoidFunction,
6484
74
                    >(Self::get_semaphore_win32_handle_khr)
6485
74
                },
6486
74
            },
6487
74
            VulkanCommand {
6488
74
                name: "vkGetSemaphoreZirconHandleFUCHSIA",
6489
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6490
74
                hooked: hooked_commands
6491
74
                    .contains(&LayerVulkanCommand::GetSemaphoreZirconHandleFuchsia),
6492
74
                proc: unsafe {
6493
74
                    std::mem::transmute::<
6494
74
                        vk::PFN_vkGetSemaphoreZirconHandleFUCHSIA,
6495
74
                        vk::PFN_vkVoidFunction,
6496
74
                    >(Self::get_semaphore_zircon_handle_fuchsia)
6497
74
                },
6498
74
            },
6499
74
            VulkanCommand {
6500
74
                name: "vkGetShaderInfoAMD",
6501
74
                features: smallvec![
Feature::Extension(Extension::AMDShaderInfo)0
],
6502
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderInfoAmd),
6503
74
                proc: unsafe {
6504
74
                    std::mem::transmute::<vk::PFN_vkGetShaderInfoAMD, vk::PFN_vkVoidFunction>(
6505
74
                        Self::get_shader_info_amd,
6506
74
                    )
6507
74
                },
6508
74
            },
6509
74
            VulkanCommand {
6510
74
                name: "vkGetShaderModuleCreateInfoIdentifierEXT",
6511
74
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6512
74
                hooked: hooked_commands
6513
74
                    .contains(&LayerVulkanCommand::GetShaderModuleCreateInfoIdentifierExt),
6514
74
                proc: unsafe {
6515
74
                    std::mem::transmute::<
6516
74
                        vk::PFN_vkGetShaderModuleCreateInfoIdentifierEXT,
6517
74
                        vk::PFN_vkVoidFunction,
6518
74
                    >(Self::get_shader_module_create_info_identifier_ext)
6519
74
                },
6520
74
            },
6521
74
            VulkanCommand {
6522
74
                name: "vkGetShaderModuleIdentifierEXT",
6523
74
                features: smallvec![
Feature::Extension(Extension::EXTShaderModuleIdentifier)0
],
6524
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetShaderModuleIdentifierExt),
6525
74
                proc: unsafe {
6526
74
                    std::mem::transmute::<
6527
74
                        vk::PFN_vkGetShaderModuleIdentifierEXT,
6528
74
                        vk::PFN_vkVoidFunction,
6529
74
                    >(Self::get_shader_module_identifier_ext)
6530
74
                },
6531
74
            },
6532
74
            VulkanCommand {
6533
74
                name: "vkGetSwapchainCounterEXT",
6534
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6535
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainCounterExt),
6536
74
                proc: unsafe {
6537
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainCounterEXT, vk::PFN_vkVoidFunction>(
6538
74
                        Self::get_swapchain_counter_ext,
6539
74
                    )
6540
74
                },
6541
74
            },
6542
74
            VulkanCommand {
6543
74
                name: "vkGetSwapchainGrallocUsage2ANDROID",
6544
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6545
74
                hooked: hooked_commands
6546
74
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsage2Android),
6547
74
                proc: unsafe {
6548
74
                    std::mem::transmute::<
6549
74
                        vk::PFN_vkGetSwapchainGrallocUsage2ANDROID,
6550
74
                        vk::PFN_vkVoidFunction,
6551
74
                    >(Self::get_swapchain_gralloc_usage2_android)
6552
74
                },
6553
74
            },
6554
74
            VulkanCommand {
6555
74
                name: "vkGetSwapchainGrallocUsageANDROID",
6556
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6557
74
                hooked: hooked_commands
6558
74
                    .contains(&LayerVulkanCommand::GetSwapchainGrallocUsageAndroid),
6559
74
                proc: unsafe {
6560
74
                    std::mem::transmute::<
6561
74
                        vk::PFN_vkGetSwapchainGrallocUsageANDROID,
6562
74
                        vk::PFN_vkVoidFunction,
6563
74
                    >(Self::get_swapchain_gralloc_usage_android)
6564
74
                },
6565
74
            },
6566
74
            VulkanCommand {
6567
74
                name: "vkGetSwapchainImagesKHR",
6568
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6569
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainImagesKhr),
6570
74
                proc: unsafe {
6571
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainImagesKHR, vk::PFN_vkVoidFunction>(
6572
74
                        Self::get_swapchain_images_khr,
6573
74
                    )
6574
74
                },
6575
74
            },
6576
74
            VulkanCommand {
6577
74
                name: "vkGetSwapchainStatusKHR",
6578
74
                features: smallvec![
Feature::Extension(Extension::KHRSharedPresentableImage)0
],
6579
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetSwapchainStatusKhr),
6580
74
                proc: unsafe {
6581
74
                    std::mem::transmute::<vk::PFN_vkGetSwapchainStatusKHR, vk::PFN_vkVoidFunction>(
6582
74
                        Self::get_swapchain_status_khr,
6583
74
                    )
6584
74
                },
6585
74
            },
6586
74
            VulkanCommand {
6587
74
                name: "vkGetValidationCacheDataEXT",
6588
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6589
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetValidationCacheDataExt),
6590
74
                proc: unsafe {
6591
74
                    std::mem::transmute::<vk::PFN_vkGetValidationCacheDataEXT, vk::PFN_vkVoidFunction>(
6592
74
                        Self::get_validation_cache_data_ext,
6593
74
                    )
6594
74
                },
6595
74
            },
6596
74
            VulkanCommand {
6597
74
                name: "vkGetVideoSessionMemoryRequirementsKHR",
6598
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
6599
74
                hooked: hooked_commands
6600
74
                    .contains(&LayerVulkanCommand::GetVideoSessionMemoryRequirementsKhr),
6601
74
                proc: unsafe {
6602
74
                    std::mem::transmute::<
6603
74
                        vk::PFN_vkGetVideoSessionMemoryRequirementsKHR,
6604
74
                        vk::PFN_vkVoidFunction,
6605
74
                    >(Self::get_video_session_memory_requirements_khr)
6606
74
                },
6607
74
            },
6608
74
            VulkanCommand {
6609
74
                name: "vkImportFenceFdKHR",
6610
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceFd)0
],
6611
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceFdKhr),
6612
74
                proc: unsafe {
6613
74
                    std::mem::transmute::<vk::PFN_vkImportFenceFdKHR, vk::PFN_vkVoidFunction>(
6614
74
                        Self::import_fence_fd_khr,
6615
74
                    )
6616
74
                },
6617
74
            },
6618
74
            VulkanCommand {
6619
74
                name: "vkImportFenceWin32HandleKHR",
6620
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceWin32)0
],
6621
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportFenceWin32HandleKhr),
6622
74
                proc: unsafe {
6623
74
                    std::mem::transmute::<vk::PFN_vkImportFenceWin32HandleKHR, vk::PFN_vkVoidFunction>(
6624
74
                        Self::import_fence_win32_handle_khr,
6625
74
                    )
6626
74
                },
6627
74
            },
6628
74
            VulkanCommand {
6629
74
                name: "vkImportSemaphoreFdKHR",
6630
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreFd)0
],
6631
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ImportSemaphoreFdKhr),
6632
74
                proc: unsafe {
6633
74
                    std::mem::transmute::<vk::PFN_vkImportSemaphoreFdKHR, vk::PFN_vkVoidFunction>(
6634
74
                        Self::import_semaphore_fd_khr,
6635
74
                    )
6636
74
                },
6637
74
            },
6638
74
            VulkanCommand {
6639
74
                name: "vkImportSemaphoreWin32HandleKHR",
6640
74
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreWin32)0
],
6641
74
                hooked: hooked_commands
6642
74
                    .contains(&LayerVulkanCommand::ImportSemaphoreWin32HandleKhr),
6643
74
                proc: unsafe {
6644
74
                    std::mem::transmute::<
6645
74
                        vk::PFN_vkImportSemaphoreWin32HandleKHR,
6646
74
                        vk::PFN_vkVoidFunction,
6647
74
                    >(Self::import_semaphore_win32_handle_khr)
6648
74
                },
6649
74
            },
6650
74
            VulkanCommand {
6651
74
                name: "vkImportSemaphoreZirconHandleFUCHSIA",
6652
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIAExternalSemaphore)0
],
6653
74
                hooked: hooked_commands
6654
74
                    .contains(&LayerVulkanCommand::ImportSemaphoreZirconHandleFuchsia),
6655
74
                proc: unsafe {
6656
74
                    std::mem::transmute::<
6657
74
                        vk::PFN_vkImportSemaphoreZirconHandleFUCHSIA,
6658
74
                        vk::PFN_vkVoidFunction,
6659
74
                    >(Self::import_semaphore_zircon_handle_fuchsia)
6660
74
                },
6661
74
            },
6662
74
            VulkanCommand {
6663
74
                name: "vkInitializePerformanceApiINTEL",
6664
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6665
74
                hooked: hooked_commands
6666
74
                    .contains(&LayerVulkanCommand::InitializePerformanceApiIntel),
6667
74
                proc: unsafe {
6668
74
                    std::mem::transmute::<
6669
74
                        vk::PFN_vkInitializePerformanceApiINTEL,
6670
74
                        vk::PFN_vkVoidFunction,
6671
74
                    >(Self::initialize_performance_api_intel)
6672
74
                },
6673
74
            },
6674
74
            VulkanCommand {
6675
74
                name: "vkInvalidateMappedMemoryRanges",
6676
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6677
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::InvalidateMappedMemoryRanges),
6678
74
                proc: unsafe {
6679
74
                    std::mem::transmute::<
6680
74
                        vk::PFN_vkInvalidateMappedMemoryRanges,
6681
74
                        vk::PFN_vkVoidFunction,
6682
74
                    >(Self::invalidate_mapped_memory_ranges)
6683
74
                },
6684
74
            },
6685
74
            VulkanCommand {
6686
74
                name: "vkMapMemory",
6687
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6688
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MapMemory),
6689
74
                proc: unsafe {
6690
74
                    std::mem::transmute::<vk::PFN_vkMapMemory, vk::PFN_vkVoidFunction>(
6691
74
                        Self::map_memory,
6692
74
                    )
6693
74
                },
6694
74
            },
6695
74
            VulkanCommand {
6696
74
                name: "vkMergePipelineCaches",
6697
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6698
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergePipelineCaches),
6699
74
                proc: unsafe {
6700
74
                    std::mem::transmute::<vk::PFN_vkMergePipelineCaches, vk::PFN_vkVoidFunction>(
6701
74
                        Self::merge_pipeline_caches,
6702
74
                    )
6703
74
                },
6704
74
            },
6705
74
            VulkanCommand {
6706
74
                name: "vkMergeValidationCachesEXT",
6707
74
                features: smallvec![
Feature::Extension(Extension::EXTValidationCache)0
],
6708
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::MergeValidationCachesExt),
6709
74
                proc: unsafe {
6710
74
                    std::mem::transmute::<vk::PFN_vkMergeValidationCachesEXT, vk::PFN_vkVoidFunction>(
6711
74
                        Self::merge_validation_caches_ext,
6712
74
                    )
6713
74
                },
6714
74
            },
6715
74
            VulkanCommand {
6716
74
                name: "vkQueueBeginDebugUtilsLabelEXT",
6717
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6718
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBeginDebugUtilsLabelExt),
6719
74
                proc: unsafe {
6720
74
                    std::mem::transmute::<
6721
74
                        vk::PFN_vkQueueBeginDebugUtilsLabelEXT,
6722
74
                        vk::PFN_vkVoidFunction,
6723
74
                    >(Self::queue_begin_debug_utils_label_ext)
6724
74
                },
6725
74
            },
6726
74
            VulkanCommand {
6727
74
                name: "vkQueueBindSparse",
6728
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6729
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueBindSparse),
6730
74
                proc: unsafe {
6731
74
                    std::mem::transmute::<vk::PFN_vkQueueBindSparse, vk::PFN_vkVoidFunction>(
6732
74
                        Self::queue_bind_sparse,
6733
74
                    )
6734
74
                },
6735
74
            },
6736
74
            VulkanCommand {
6737
74
                name: "vkQueueEndDebugUtilsLabelEXT",
6738
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6739
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueEndDebugUtilsLabelExt),
6740
74
                proc: unsafe {
6741
74
                    std::mem::transmute::<
6742
74
                        vk::PFN_vkQueueEndDebugUtilsLabelEXT,
6743
74
                        vk::PFN_vkVoidFunction,
6744
74
                    >(Self::queue_end_debug_utils_label_ext)
6745
74
                },
6746
74
            },
6747
74
            VulkanCommand {
6748
74
                name: "vkQueueInsertDebugUtilsLabelEXT",
6749
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6750
74
                hooked: hooked_commands
6751
74
                    .contains(&LayerVulkanCommand::QueueInsertDebugUtilsLabelExt),
6752
74
                proc: unsafe {
6753
74
                    std::mem::transmute::<
6754
74
                        vk::PFN_vkQueueInsertDebugUtilsLabelEXT,
6755
74
                        vk::PFN_vkVoidFunction,
6756
74
                    >(Self::queue_insert_debug_utils_label_ext)
6757
74
                },
6758
74
            },
6759
74
            VulkanCommand {
6760
74
                name: "vkQueuePresentKHR",
6761
74
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain)0
],
6762
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueuePresentKhr),
6763
74
                proc: unsafe {
6764
74
                    std::mem::transmute::<vk::PFN_vkQueuePresentKHR, vk::PFN_vkVoidFunction>(
6765
74
                        Self::queue_present_khr,
6766
74
                    )
6767
74
                },
6768
74
            },
6769
74
            VulkanCommand {
6770
74
                name: "vkQueueSetPerformanceConfigurationINTEL",
6771
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6772
74
                hooked: hooked_commands
6773
74
                    .contains(&LayerVulkanCommand::QueueSetPerformanceConfigurationIntel),
6774
74
                proc: unsafe {
6775
74
                    std::mem::transmute::<
6776
74
                        vk::PFN_vkQueueSetPerformanceConfigurationINTEL,
6777
74
                        vk::PFN_vkVoidFunction,
6778
74
                    >(Self::queue_set_performance_configuration_intel)
6779
74
                },
6780
74
            },
6781
74
            VulkanCommand {
6782
74
                name: "vkQueueSignalReleaseImageANDROID",
6783
74
                features: smallvec![
Feature::Extension(Extension::ANDROIDNativeBuffer)0
],
6784
74
                hooked: hooked_commands
6785
74
                    .contains(&LayerVulkanCommand::QueueSignalReleaseImageAndroid),
6786
74
                proc: unsafe {
6787
74
                    std::mem::transmute::<
6788
74
                        vk::PFN_vkQueueSignalReleaseImageANDROID,
6789
74
                        vk::PFN_vkVoidFunction,
6790
74
                    >(Self::queue_signal_release_image_android)
6791
74
                },
6792
74
            },
6793
74
            VulkanCommand {
6794
74
                name: "vkQueueSubmit",
6795
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6796
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit),
6797
74
                proc: unsafe {
6798
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit, vk::PFN_vkVoidFunction>(
6799
74
                        Self::queue_submit,
6800
74
                    )
6801
74
                },
6802
74
            },
6803
74
            VulkanCommand {
6804
74
                name: "vkQueueSubmit2",
6805
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
6806
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6807
74
                proc: unsafe {
6808
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6809
74
                        Self::queue_submit2,
6810
74
                    )
6811
74
                },
6812
74
            },
6813
74
            VulkanCommand {
6814
74
                name: "vkQueueSubmit2KHR",
6815
74
                features: smallvec![
Feature::Extension(Extension::KHRSynchronization2)0
],
6816
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueSubmit2),
6817
74
                proc: unsafe {
6818
74
                    std::mem::transmute::<vk::PFN_vkQueueSubmit2, vk::PFN_vkVoidFunction>(
6819
74
                        Self::queue_submit2,
6820
74
                    )
6821
74
                },
6822
74
            },
6823
74
            VulkanCommand {
6824
74
                name: "vkQueueWaitIdle",
6825
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6826
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::QueueWaitIdle),
6827
74
                proc: unsafe {
6828
74
                    std::mem::transmute::<vk::PFN_vkQueueWaitIdle, vk::PFN_vkVoidFunction>(
6829
74
                        Self::queue_wait_idle,
6830
74
                    )
6831
74
                },
6832
74
            },
6833
74
            VulkanCommand {
6834
74
                name: "vkRegisterDeviceEventEXT",
6835
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6836
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDeviceEventExt),
6837
74
                proc: unsafe {
6838
74
                    std::mem::transmute::<vk::PFN_vkRegisterDeviceEventEXT, vk::PFN_vkVoidFunction>(
6839
74
                        Self::register_device_event_ext,
6840
74
                    )
6841
74
                },
6842
74
            },
6843
74
            VulkanCommand {
6844
74
                name: "vkRegisterDisplayEventEXT",
6845
74
                features: smallvec![
Feature::Extension(Extension::EXTDisplayControl)0
],
6846
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::RegisterDisplayEventExt),
6847
74
                proc: unsafe {
6848
74
                    std::mem::transmute::<vk::PFN_vkRegisterDisplayEventEXT, vk::PFN_vkVoidFunction>(
6849
74
                        Self::register_display_event_ext,
6850
74
                    )
6851
74
                },
6852
74
            },
6853
74
            VulkanCommand {
6854
74
                name: "vkReleaseFullScreenExclusiveModeEXT",
6855
74
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
6856
74
                hooked: hooked_commands
6857
74
                    .contains(&LayerVulkanCommand::ReleaseFullScreenExclusiveModeExt),
6858
74
                proc: unsafe {
6859
74
                    std::mem::transmute::<
6860
74
                        vk::PFN_vkReleaseFullScreenExclusiveModeEXT,
6861
74
                        vk::PFN_vkVoidFunction,
6862
74
                    >(Self::release_full_screen_exclusive_mode_ext)
6863
74
                },
6864
74
            },
6865
74
            VulkanCommand {
6866
74
                name: "vkReleasePerformanceConfigurationINTEL",
6867
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
6868
74
                hooked: hooked_commands
6869
74
                    .contains(&LayerVulkanCommand::ReleasePerformanceConfigurationIntel),
6870
74
                proc: unsafe {
6871
74
                    std::mem::transmute::<
6872
74
                        vk::PFN_vkReleasePerformanceConfigurationINTEL,
6873
74
                        vk::PFN_vkVoidFunction,
6874
74
                    >(Self::release_performance_configuration_intel)
6875
74
                },
6876
74
            },
6877
74
            VulkanCommand {
6878
74
                name: "vkReleaseProfilingLockKHR",
6879
74
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
6880
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseProfilingLockKhr),
6881
74
                proc: unsafe {
6882
74
                    std::mem::transmute::<vk::PFN_vkReleaseProfilingLockKHR, vk::PFN_vkVoidFunction>(
6883
74
                        Self::release_profiling_lock_khr,
6884
74
                    )
6885
74
                },
6886
74
            },
6887
74
            VulkanCommand {
6888
74
                name: "vkReleaseSwapchainImagesEXT",
6889
74
                features: smallvec![
Feature::Extension(Extension::EXTSwapchainMaintenance1)0
],
6890
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseSwapchainImagesExt),
6891
74
                proc: unsafe {
6892
74
                    std::mem::transmute::<vk::PFN_vkReleaseSwapchainImagesEXT, vk::PFN_vkVoidFunction>(
6893
74
                        Self::release_swapchain_images_ext,
6894
74
                    )
6895
74
                },
6896
74
            },
6897
74
            VulkanCommand {
6898
74
                name: "vkResetCommandBuffer",
6899
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6900
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandBuffer),
6901
74
                proc: unsafe {
6902
74
                    std::mem::transmute::<vk::PFN_vkResetCommandBuffer, vk::PFN_vkVoidFunction>(
6903
74
                        Self::reset_command_buffer,
6904
74
                    )
6905
74
                },
6906
74
            },
6907
74
            VulkanCommand {
6908
74
                name: "vkResetCommandPool",
6909
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6910
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetCommandPool),
6911
74
                proc: unsafe {
6912
74
                    std::mem::transmute::<vk::PFN_vkResetCommandPool, vk::PFN_vkVoidFunction>(
6913
74
                        Self::reset_command_pool,
6914
74
                    )
6915
74
                },
6916
74
            },
6917
74
            VulkanCommand {
6918
74
                name: "vkResetDescriptorPool",
6919
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6920
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetDescriptorPool),
6921
74
                proc: unsafe {
6922
74
                    std::mem::transmute::<vk::PFN_vkResetDescriptorPool, vk::PFN_vkVoidFunction>(
6923
74
                        Self::reset_descriptor_pool,
6924
74
                    )
6925
74
                },
6926
74
            },
6927
74
            VulkanCommand {
6928
74
                name: "vkResetEvent",
6929
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6930
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetEvent),
6931
74
                proc: unsafe {
6932
74
                    std::mem::transmute::<vk::PFN_vkResetEvent, vk::PFN_vkVoidFunction>(
6933
74
                        Self::reset_event,
6934
74
                    )
6935
74
                },
6936
74
            },
6937
74
            VulkanCommand {
6938
74
                name: "vkResetFences",
6939
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
6940
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetFences),
6941
74
                proc: unsafe {
6942
74
                    std::mem::transmute::<vk::PFN_vkResetFences, vk::PFN_vkVoidFunction>(
6943
74
                        Self::reset_fences,
6944
74
                    )
6945
74
                },
6946
74
            },
6947
74
            VulkanCommand {
6948
74
                name: "vkResetQueryPool",
6949
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
6950
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6951
74
                proc: unsafe {
6952
74
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6953
74
                        Self::reset_query_pool,
6954
74
                    )
6955
74
                },
6956
74
            },
6957
74
            VulkanCommand {
6958
74
                name: "vkResetQueryPoolEXT",
6959
74
                features: smallvec![
Feature::Extension(Extension::EXTHostQueryReset)0
],
6960
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::ResetQueryPool),
6961
74
                proc: unsafe {
6962
74
                    std::mem::transmute::<vk::PFN_vkResetQueryPool, vk::PFN_vkVoidFunction>(
6963
74
                        Self::reset_query_pool,
6964
74
                    )
6965
74
                },
6966
74
            },
6967
74
            VulkanCommand {
6968
74
                name: "vkSetBufferCollectionBufferConstraintsFUCHSIA",
6969
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6970
74
                hooked: hooked_commands
6971
74
                    .contains(&LayerVulkanCommand::SetBufferCollectionBufferConstraintsFuchsia),
6972
74
                proc: unsafe {
6973
74
                    std::mem::transmute::<
6974
74
                        vk::PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA,
6975
74
                        vk::PFN_vkVoidFunction,
6976
74
                    >(Self::set_buffer_collection_buffer_constraints_fuchsia)
6977
74
                },
6978
74
            },
6979
74
            VulkanCommand {
6980
74
                name: "vkSetBufferCollectionImageConstraintsFUCHSIA",
6981
74
                features: smallvec![
Feature::Extension(Extension::FUCHSIABufferCollection)0
],
6982
74
                hooked: hooked_commands
6983
74
                    .contains(&LayerVulkanCommand::SetBufferCollectionImageConstraintsFuchsia),
6984
74
                proc: unsafe {
6985
74
                    std::mem::transmute::<
6986
74
                        vk::PFN_vkSetBufferCollectionImageConstraintsFUCHSIA,
6987
74
                        vk::PFN_vkVoidFunction,
6988
74
                    >(Self::set_buffer_collection_image_constraints_fuchsia)
6989
74
                },
6990
74
            },
6991
74
            VulkanCommand {
6992
74
                name: "vkSetDebugUtilsObjectNameEXT",
6993
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
6994
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectNameExt),
6995
74
                proc: unsafe {
6996
74
                    std::mem::transmute::<
6997
74
                        vk::PFN_vkSetDebugUtilsObjectNameEXT,
6998
74
                        vk::PFN_vkVoidFunction,
6999
74
                    >(Self::set_debug_utils_object_name_ext)
7000
74
                },
7001
74
            },
7002
74
            VulkanCommand {
7003
74
                name: "vkSetDebugUtilsObjectTagEXT",
7004
74
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7005
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDebugUtilsObjectTagExt),
7006
74
                proc: unsafe {
7007
74
                    std::mem::transmute::<vk::PFN_vkSetDebugUtilsObjectTagEXT, vk::PFN_vkVoidFunction>(
7008
74
                        Self::set_debug_utils_object_tag_ext,
7009
74
                    )
7010
74
                },
7011
74
            },
7012
74
            VulkanCommand {
7013
74
                name: "vkSetDeviceMemoryPriorityEXT",
7014
74
                features: smallvec![
Feature::Extension(Extension::EXTPageableDeviceLocalMemory)0
],
7015
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetDeviceMemoryPriorityExt),
7016
74
                proc: unsafe {
7017
74
                    std::mem::transmute::<
7018
74
                        vk::PFN_vkSetDeviceMemoryPriorityEXT,
7019
74
                        vk::PFN_vkVoidFunction,
7020
74
                    >(Self::set_device_memory_priority_ext)
7021
74
                },
7022
74
            },
7023
74
            VulkanCommand {
7024
74
                name: "vkSetEvent",
7025
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7026
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetEvent),
7027
74
                proc: unsafe {
7028
74
                    std::mem::transmute::<vk::PFN_vkSetEvent, vk::PFN_vkVoidFunction>(
7029
74
                        Self::set_event,
7030
74
                    )
7031
74
                },
7032
74
            },
7033
74
            VulkanCommand {
7034
74
                name: "vkSetHdrMetadataEXT",
7035
74
                features: smallvec![
Feature::Extension(Extension::EXTHdrMetadata)0
],
7036
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetHdrMetadataExt),
7037
74
                proc: unsafe {
7038
74
                    std::mem::transmute::<vk::PFN_vkSetHdrMetadataEXT, vk::PFN_vkVoidFunction>(
7039
74
                        Self::set_hdr_metadata_ext,
7040
74
                    )
7041
74
                },
7042
74
            },
7043
74
            VulkanCommand {
7044
74
                name: "vkSetLocalDimmingAMD",
7045
74
                features: smallvec![
Feature::Extension(Extension::AMDDisplayNativeHdr)0
],
7046
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetLocalDimmingAmd),
7047
74
                proc: unsafe {
7048
74
                    std::mem::transmute::<vk::PFN_vkSetLocalDimmingAMD, vk::PFN_vkVoidFunction>(
7049
74
                        Self::set_local_dimming_amd,
7050
74
                    )
7051
74
                },
7052
74
            },
7053
74
            VulkanCommand {
7054
74
                name: "vkSetPrivateData",
7055
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3 })0
],
7056
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7057
74
                proc: unsafe {
7058
74
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7059
74
                        Self::set_private_data,
7060
74
                    )
7061
74
                },
7062
74
            },
7063
74
            VulkanCommand {
7064
74
                name: "vkSetPrivateDataEXT",
7065
74
                features: smallvec![
Feature::Extension(Extension::EXTPrivateData)0
],
7066
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SetPrivateData),
7067
74
                proc: unsafe {
7068
74
                    std::mem::transmute::<vk::PFN_vkSetPrivateData, vk::PFN_vkVoidFunction>(
7069
74
                        Self::set_private_data,
7070
74
                    )
7071
74
                },
7072
74
            },
7073
74
            VulkanCommand {
7074
74
                name: "vkSignalSemaphore",
7075
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7076
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7077
74
                proc: unsafe {
7078
74
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7079
74
                        Self::signal_semaphore,
7080
74
                    )
7081
74
                },
7082
74
            },
7083
74
            VulkanCommand {
7084
74
                name: "vkSignalSemaphoreKHR",
7085
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7086
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::SignalSemaphore),
7087
74
                proc: unsafe {
7088
74
                    std::mem::transmute::<vk::PFN_vkSignalSemaphore, vk::PFN_vkVoidFunction>(
7089
74
                        Self::signal_semaphore,
7090
74
                    )
7091
74
                },
7092
74
            },
7093
74
            VulkanCommand {
7094
74
                name: "vkTrimCommandPool",
7095
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7096
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7097
74
                proc: unsafe {
7098
74
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7099
74
                        Self::trim_command_pool,
7100
74
                    )
7101
74
                },
7102
74
            },
7103
74
            VulkanCommand {
7104
74
                name: "vkTrimCommandPoolKHR",
7105
74
                features: smallvec![
Feature::Extension(Extension::KHRMaintenance1)0
],
7106
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::TrimCommandPool),
7107
74
                proc: unsafe {
7108
74
                    std::mem::transmute::<vk::PFN_vkTrimCommandPool, vk::PFN_vkVoidFunction>(
7109
74
                        Self::trim_command_pool,
7110
74
                    )
7111
74
                },
7112
74
            },
7113
74
            VulkanCommand {
7114
74
                name: "vkUninitializePerformanceApiINTEL",
7115
74
                features: smallvec![
Feature::Extension(Extension::INTELPerformanceQuery)0
],
7116
74
                hooked: hooked_commands
7117
74
                    .contains(&LayerVulkanCommand::UninitializePerformanceApiIntel),
7118
74
                proc: unsafe {
7119
74
                    std::mem::transmute::<
7120
74
                        vk::PFN_vkUninitializePerformanceApiINTEL,
7121
74
                        vk::PFN_vkVoidFunction,
7122
74
                    >(Self::uninitialize_performance_api_intel)
7123
74
                },
7124
74
            },
7125
74
            VulkanCommand {
7126
74
                name: "vkUnmapMemory",
7127
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7128
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::UnmapMemory),
7129
74
                proc: unsafe {
7130
74
                    std::mem::transmute::<vk::PFN_vkUnmapMemory, vk::PFN_vkVoidFunction>(
7131
74
                        Self::unmap_memory,
7132
74
                    )
7133
74
                },
7134
74
            },
7135
74
            VulkanCommand {
7136
74
                name: "vkUpdateDescriptorSetWithTemplate",
7137
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1 })0
],
7138
74
                hooked: hooked_commands
7139
74
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7140
74
                proc: unsafe {
7141
74
                    std::mem::transmute::<
7142
74
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7143
74
                        vk::PFN_vkVoidFunction,
7144
74
                    >(Self::update_descriptor_set_with_template)
7145
74
                },
7146
74
            },
7147
74
            VulkanCommand {
7148
74
                name: "vkUpdateDescriptorSetWithTemplateKHR",
7149
74
                features: smallvec![
Feature::Extension(Extension::KHRDescriptorUpdateTemplate)0
],
7150
74
                hooked: hooked_commands
7151
74
                    .contains(&LayerVulkanCommand::UpdateDescriptorSetWithTemplate),
7152
74
                proc: unsafe {
7153
74
                    std::mem::transmute::<
7154
74
                        vk::PFN_vkUpdateDescriptorSetWithTemplate,
7155
74
                        vk::PFN_vkVoidFunction,
7156
74
                    >(Self::update_descriptor_set_with_template)
7157
74
                },
7158
74
            },
7159
74
            VulkanCommand {
7160
74
                name: "vkUpdateDescriptorSets",
7161
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7162
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::UpdateDescriptorSets),
7163
74
                proc: unsafe {
7164
74
                    std::mem::transmute::<vk::PFN_vkUpdateDescriptorSets, vk::PFN_vkVoidFunction>(
7165
74
                        Self::update_descriptor_sets,
7166
74
                    )
7167
74
                },
7168
74
            },
7169
74
            VulkanCommand {
7170
74
                name: "vkUpdateVideoSessionParametersKHR",
7171
74
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7172
74
                hooked: hooked_commands
7173
74
                    .contains(&LayerVulkanCommand::UpdateVideoSessionParametersKhr),
7174
74
                proc: unsafe {
7175
74
                    std::mem::transmute::<
7176
74
                        vk::PFN_vkUpdateVideoSessionParametersKHR,
7177
74
                        vk::PFN_vkVoidFunction,
7178
74
                    >(Self::update_video_session_parameters_khr)
7179
74
                },
7180
74
            },
7181
74
            VulkanCommand {
7182
74
                name: "vkWaitForFences",
7183
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0 })0
],
7184
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForFences),
7185
74
                proc: unsafe {
7186
74
                    std::mem::transmute::<vk::PFN_vkWaitForFences, vk::PFN_vkVoidFunction>(
7187
74
                        Self::wait_for_fences,
7188
74
                    )
7189
74
                },
7190
74
            },
7191
74
            VulkanCommand {
7192
74
                name: "vkWaitForPresentKHR",
7193
74
                features: smallvec![
Feature::Extension(Extension::KHRPresentWait)0
],
7194
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitForPresentKhr),
7195
74
                proc: unsafe {
7196
74
                    std::mem::transmute::<vk::PFN_vkWaitForPresentKHR, vk::PFN_vkVoidFunction>(
7197
74
                        Self::wait_for_present_khr,
7198
74
                    )
7199
74
                },
7200
74
            },
7201
74
            VulkanCommand {
7202
74
                name: "vkWaitSemaphores",
7203
74
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 2 })0
],
7204
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7205
74
                proc: unsafe {
7206
74
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7207
74
                        Self::wait_semaphores,
7208
74
                    )
7209
74
                },
7210
74
            },
7211
74
            VulkanCommand {
7212
74
                name: "vkWaitSemaphoresKHR",
7213
74
                features: smallvec![
Feature::Extension(Extension::KHRTimelineSemaphore)0
],
7214
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WaitSemaphores),
7215
74
                proc: unsafe {
7216
74
                    std::mem::transmute::<vk::PFN_vkWaitSemaphores, vk::PFN_vkVoidFunction>(
7217
74
                        Self::wait_semaphores,
7218
74
                    )
7219
74
                },
7220
74
            },
7221
74
            VulkanCommand {
7222
74
                name: "vkWriteAccelerationStructuresPropertiesKHR",
7223
74
                features: smallvec![
Feature::Extension(Extension::KHRAccelerationStructure)0
],
7224
74
                hooked: hooked_commands
7225
74
                    .contains(&LayerVulkanCommand::WriteAccelerationStructuresPropertiesKhr),
7226
74
                proc: unsafe {
7227
74
                    std::mem::transmute::<
7228
74
                        vk::PFN_vkWriteAccelerationStructuresPropertiesKHR,
7229
74
                        vk::PFN_vkVoidFunction,
7230
74
                    >(Self::write_acceleration_structures_properties_khr)
7231
74
                },
7232
74
            },
7233
74
            VulkanCommand {
7234
74
                name: "vkWriteMicromapsPropertiesEXT",
7235
74
                features: smallvec![
Feature::Extension(Extension::EXTOpacityMicromap)0
],
7236
74
                hooked: hooked_commands.contains(&LayerVulkanCommand::WriteMicromapsPropertiesExt),
7237
74
                proc: unsafe {
7238
74
                    std::mem::transmute::<
7239
74
                        vk::PFN_vkWriteMicromapsPropertiesEXT,
7240
74
                        vk::PFN_vkVoidFunction,
7241
74
                    >(Self::write_micromaps_properties_ext)
7242
74
                },
7243
74
            },
7244
74
        ])
7245
74
    }
7246
51
    pub(crate) fn create_instance_commands(
7247
51
        &self,
7248
51
        instance_info: &T::InstanceInfo,
7249
51
    ) -> Box<[VulkanCommand]> {
7250
51
        let hooked_commands = self
7251
51
            .layer_info
7252
51
            .hooked_instance_commands(instance_info)
7253
51
            .collect::<HashSet<_>>();
7254
51
        Box::new([
7255
51
            VulkanCommand {
7256
51
                name: "vkAcquireDrmDisplayEXT",
7257
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7258
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireDrmDisplayExt),
7259
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_drm_display_ext)},
7260
51
            },
7261
51
            VulkanCommand {
7262
51
                name: "vkAcquireWinrtDisplayNV",
7263
51
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7264
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireWinrtDisplayNv),
7265
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::acquire_winrt_display_nv)},
7266
51
            },
7267
51
            VulkanCommand {
7268
51
                name: "vkAcquireXlibDisplayEXT",
7269
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7270
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::AcquireXlibDisplayExt),
7271
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkAcquireXlibDisplayEXT, vk::PFN_vkVoidFunction>(Self::acquire_xlib_display_ext)},
7272
51
            },
7273
51
            VulkanCommand {
7274
51
                name: "vkCreateAndroidSurfaceKHR",
7275
51
                features: smallvec![
Feature::Extension(Extension::KHRAndroidSurface)0
],
7276
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateAndroidSurfaceKhr),
7277
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateAndroidSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_android_surface_khr)},
7278
51
            },
7279
51
            VulkanCommand {
7280
51
                name: "vkCreateDebugReportCallbackEXT",
7281
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7282
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugReportCallbackExt),
7283
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::create_debug_report_callback_ext)},
7284
51
            },
7285
51
            VulkanCommand {
7286
51
                name: "vkCreateDebugUtilsMessengerEXT",
7287
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7288
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDebugUtilsMessengerExt),
7289
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::create_debug_utils_messenger_ext)},
7290
51
            },
7291
51
            VulkanCommand {
7292
51
                name: "vkCreateDevice",
7293
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7294
                hooked: true,
7295
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDevice, vk::PFN_vkVoidFunction>(Self::create_device)},
7296
51
            },
7297
51
            VulkanCommand {
7298
51
                name: "vkCreateDirectFBSurfaceEXT",
7299
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7300
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDirectFbSurfaceExt),
7301
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDirectFBSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_direct_fb_surface_ext)},
7302
51
            },
7303
51
            VulkanCommand {
7304
51
                name: "vkCreateDisplayModeKHR",
7305
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7306
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayModeKhr),
7307
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayModeKHR, vk::PFN_vkVoidFunction>(Self::create_display_mode_khr)},
7308
51
            },
7309
51
            VulkanCommand {
7310
51
                name: "vkCreateDisplayPlaneSurfaceKHR",
7311
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7312
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateDisplayPlaneSurfaceKhr),
7313
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateDisplayPlaneSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_display_plane_surface_khr)},
7314
51
            },
7315
51
            VulkanCommand {
7316
51
                name: "vkCreateHeadlessSurfaceEXT",
7317
51
                features: smallvec![
Feature::Extension(Extension::EXTHeadlessSurface)0
],
7318
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateHeadlessSurfaceExt),
7319
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateHeadlessSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_headless_surface_ext)},
7320
51
            },
7321
51
            VulkanCommand {
7322
51
                name: "vkCreateIOSSurfaceMVK",
7323
51
                features: smallvec![
Feature::Extension(Extension::MVKIosSurface)0
],
7324
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateIosSurfaceMvk),
7325
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateIOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_ios_surface_mvk)},
7326
51
            },
7327
51
            VulkanCommand {
7328
51
                name: "vkCreateImagePipeSurfaceFUCHSIA",
7329
51
                features: smallvec![
Feature::Extension(Extension::FUCHSIAImagepipeSurface)0
],
7330
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateImagePipeSurfaceFuchsia),
7331
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateImagePipeSurfaceFUCHSIA, vk::PFN_vkVoidFunction>(Self::create_image_pipe_surface_fuchsia)},
7332
51
            },
7333
51
            VulkanCommand {
7334
51
                name: "vkCreateMacOSSurfaceMVK",
7335
51
                features: smallvec![
Feature::Extension(Extension::MVKMacosSurface)0
],
7336
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMacOsSurfaceMvk),
7337
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMacOSSurfaceMVK, vk::PFN_vkVoidFunction>(Self::create_mac_os_surface_mvk)},
7338
51
            },
7339
51
            VulkanCommand {
7340
51
                name: "vkCreateMetalSurfaceEXT",
7341
51
                features: smallvec![
Feature::Extension(Extension::EXTMetalSurface)0
],
7342
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateMetalSurfaceExt),
7343
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateMetalSurfaceEXT, vk::PFN_vkVoidFunction>(Self::create_metal_surface_ext)},
7344
51
            },
7345
51
            VulkanCommand {
7346
51
                name: "vkCreateScreenSurfaceQNX",
7347
51
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7348
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateScreenSurfaceQnx),
7349
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateScreenSurfaceQNX, vk::PFN_vkVoidFunction>(Self::create_screen_surface_qnx)},
7350
51
            },
7351
51
            VulkanCommand {
7352
51
                name: "vkCreateStreamDescriptorSurfaceGGP",
7353
51
                features: smallvec![
Feature::Extension(Extension::GGPStreamDescriptorSurface)0
],
7354
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateStreamDescriptorSurfaceGgp),
7355
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateStreamDescriptorSurfaceGGP, vk::PFN_vkVoidFunction>(Self::create_stream_descriptor_surface_ggp)},
7356
51
            },
7357
51
            VulkanCommand {
7358
51
                name: "vkCreateViSurfaceNN",
7359
51
                features: smallvec![
Feature::Extension(Extension::NNViSurface)0
],
7360
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateViSurfaceNn),
7361
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateViSurfaceNN, vk::PFN_vkVoidFunction>(Self::create_vi_surface_nn)},
7362
51
            },
7363
51
            VulkanCommand {
7364
51
                name: "vkCreateWaylandSurfaceKHR",
7365
51
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7366
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWaylandSurfaceKhr),
7367
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWaylandSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_wayland_surface_khr)},
7368
51
            },
7369
51
            VulkanCommand {
7370
51
                name: "vkCreateWin32SurfaceKHR",
7371
51
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7372
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateWin32SurfaceKhr),
7373
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateWin32SurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_win32_surface_khr)},
7374
51
            },
7375
51
            VulkanCommand {
7376
51
                name: "vkCreateXcbSurfaceKHR",
7377
51
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7378
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXcbSurfaceKhr),
7379
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXcbSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xcb_surface_khr)},
7380
51
            },
7381
51
            VulkanCommand {
7382
51
                name: "vkCreateXlibSurfaceKHR",
7383
51
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7384
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::CreateXlibSurfaceKhr),
7385
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkCreateXlibSurfaceKHR, vk::PFN_vkVoidFunction>(Self::create_xlib_surface_khr)},
7386
51
            },
7387
51
            VulkanCommand {
7388
51
                name: "vkDebugReportMessageEXT",
7389
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7390
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DebugReportMessageExt),
7391
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDebugReportMessageEXT, vk::PFN_vkVoidFunction>(Self::debug_report_message_ext)},
7392
51
            },
7393
51
            VulkanCommand {
7394
51
                name: "vkDestroyDebugReportCallbackEXT",
7395
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugReport)0
],
7396
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugReportCallbackExt),
7397
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugReportCallbackEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_report_callback_ext)},
7398
51
            },
7399
51
            VulkanCommand {
7400
51
                name: "vkDestroyDebugUtilsMessengerEXT",
7401
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7402
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroyDebugUtilsMessengerExt),
7403
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyDebugUtilsMessengerEXT, vk::PFN_vkVoidFunction>(Self::destroy_debug_utils_messenger_ext)},
7404
51
            },
7405
51
            VulkanCommand {
7406
51
                name: "vkDestroyInstance",
7407
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7408
                hooked: true,
7409
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroyInstance, vk::PFN_vkVoidFunction>(Self::destroy_instance)},
7410
51
            },
7411
51
            VulkanCommand {
7412
51
                name: "vkDestroySurfaceKHR",
7413
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7414
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::DestroySurfaceKhr),
7415
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkDestroySurfaceKHR, vk::PFN_vkVoidFunction>(Self::destroy_surface_khr)},
7416
51
            },
7417
51
            VulkanCommand {
7418
51
                name: "vkEnumerateDeviceExtensionProperties",
7419
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7420
                hooked: true,
7421
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceExtensionProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_extension_properties)},
7422
51
            },
7423
51
            VulkanCommand {
7424
51
                name: "vkEnumerateDeviceLayerProperties",
7425
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7426
                hooked: true,
7427
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumerateDeviceLayerProperties, vk::PFN_vkVoidFunction>(Self::enumerate_device_layer_properties)},
7428
51
            },
7429
51
            VulkanCommand {
7430
51
                name: "vkEnumeratePhysicalDeviceGroups",
7431
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7432
                hooked: true,
7433
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7434
51
            },
7435
51
            VulkanCommand {
7436
51
                name: "vkEnumeratePhysicalDeviceGroupsKHR",
7437
51
                features: smallvec![
Feature::Extension(Extension::KHRDeviceGroupCreation)0
],
7438
                hooked: true,
7439
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceGroups, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_groups)},
7440
51
            },
7441
51
            VulkanCommand {
7442
51
                name: "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR",
7443
51
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7444
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKhr),
7445
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, vk::PFN_vkVoidFunction>(Self::enumerate_physical_device_queue_family_performance_query_counters_khr)},
7446
51
            },
7447
51
            VulkanCommand {
7448
51
                name: "vkEnumeratePhysicalDevices",
7449
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7450
                hooked: true,
7451
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkEnumeratePhysicalDevices, vk::PFN_vkVoidFunction>(Self::enumerate_physical_devices)},
7452
51
            },
7453
51
            VulkanCommand {
7454
51
                name: "vkGetDisplayModeProperties2KHR",
7455
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7456
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModeProperties2Khr),
7457
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModeProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties2_khr)},
7458
51
            },
7459
51
            VulkanCommand {
7460
51
                name: "vkGetDisplayModePropertiesKHR",
7461
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7462
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayModePropertiesKhr),
7463
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayModePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_mode_properties_khr)},
7464
51
            },
7465
51
            VulkanCommand {
7466
51
                name: "vkGetDisplayPlaneCapabilities2KHR",
7467
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7468
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilities2Khr),
7469
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities2_khr)},
7470
51
            },
7471
51
            VulkanCommand {
7472
51
                name: "vkGetDisplayPlaneCapabilitiesKHR",
7473
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7474
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneCapabilitiesKhr),
7475
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_capabilities_khr)},
7476
51
            },
7477
51
            VulkanCommand {
7478
51
                name: "vkGetDisplayPlaneSupportedDisplaysKHR",
7479
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7480
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDisplayPlaneSupportedDisplaysKhr),
7481
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDisplayPlaneSupportedDisplaysKHR, vk::PFN_vkVoidFunction>(Self::get_display_plane_supported_displays_khr)},
7482
51
            },
7483
51
            VulkanCommand {
7484
51
                name: "vkGetDrmDisplayEXT",
7485
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireDrmDisplay)0
],
7486
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetDrmDisplayExt),
7487
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetDrmDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_drm_display_ext)},
7488
51
            },
7489
51
            VulkanCommand {
7490
51
                name: "vkGetInstanceProcAddr",
7491
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7492
                hooked: true,
7493
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetInstanceProcAddr, vk::PFN_vkVoidFunction>(Self::get_instance_proc_addr)},
7494
51
            },
7495
51
            VulkanCommand {
7496
51
                name: "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT",
7497
51
                features: smallvec![
Feature::Extension(Extension::EXTCalibratedTimestamps)0
],
7498
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCalibrateableTimeDomainsExt),
7499
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_calibrateable_time_domains_ext)},
7500
51
            },
7501
51
            VulkanCommand {
7502
51
                name: "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV",
7503
51
                features: smallvec![
Feature::Extension(Extension::NVCooperativeMatrix)0
],
7504
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceCooperativeMatrixPropertiesNv),
7505
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_cooperative_matrix_properties_nv)},
7506
51
            },
7507
51
            VulkanCommand {
7508
51
                name: "vkGetPhysicalDeviceDirectFBPresentationSupportEXT",
7509
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectfbSurface)0
],
7510
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDirectFbPresentationSupportExt),
7511
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_direct_fb_presentation_support_ext)},
7512
51
            },
7513
51
            VulkanCommand {
7514
51
                name: "vkGetPhysicalDeviceDisplayPlaneProperties2KHR",
7515
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7516
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlaneProperties2Khr),
7517
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties2_khr)},
7518
51
            },
7519
51
            VulkanCommand {
7520
51
                name: "vkGetPhysicalDeviceDisplayPlanePropertiesKHR",
7521
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7522
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPlanePropertiesKhr),
7523
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_plane_properties_khr)},
7524
51
            },
7525
51
            VulkanCommand {
7526
51
                name: "vkGetPhysicalDeviceDisplayProperties2KHR",
7527
51
                features: smallvec![
Feature::Extension(Extension::KHRGetDisplayProperties2)0
],
7528
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayProperties2Khr),
7529
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayProperties2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties2_khr)},
7530
51
            },
7531
51
            VulkanCommand {
7532
51
                name: "vkGetPhysicalDeviceDisplayPropertiesKHR",
7533
51
                features: smallvec![
Feature::Extension(Extension::KHRDisplay)0
],
7534
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceDisplayPropertiesKhr),
7535
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceDisplayPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_display_properties_khr)},
7536
51
            },
7537
51
            VulkanCommand {
7538
51
                name: "vkGetPhysicalDeviceExternalBufferProperties",
7539
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7540
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7541
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7542
51
            },
7543
51
            VulkanCommand {
7544
51
                name: "vkGetPhysicalDeviceExternalBufferPropertiesKHR",
7545
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalMemoryCapabilities)0
],
7546
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalBufferProperties),
7547
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalBufferProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_buffer_properties)},
7548
51
            },
7549
51
            VulkanCommand {
7550
51
                name: "vkGetPhysicalDeviceExternalFenceProperties",
7551
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7552
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7553
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7554
51
            },
7555
51
            VulkanCommand {
7556
51
                name: "vkGetPhysicalDeviceExternalFencePropertiesKHR",
7557
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalFenceCapabilities)0
],
7558
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalFenceProperties),
7559
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalFenceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_fence_properties)},
7560
51
            },
7561
51
            VulkanCommand {
7562
51
                name: "vkGetPhysicalDeviceExternalImageFormatPropertiesNV",
7563
51
                features: smallvec![
Feature::Extension(Extension::NVExternalMemoryCapabilities)0
],
7564
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalImageFormatPropertiesNv),
7565
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_image_format_properties_nv)},
7566
51
            },
7567
51
            VulkanCommand {
7568
51
                name: "vkGetPhysicalDeviceExternalSemaphoreProperties",
7569
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7570
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7571
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7572
51
            },
7573
51
            VulkanCommand {
7574
51
                name: "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR",
7575
51
                features: smallvec![
Feature::Extension(Extension::KHRExternalSemaphoreCapabilities)0
],
7576
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceExternalSemaphoreProperties),
7577
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_external_semaphore_properties)},
7578
51
            },
7579
51
            VulkanCommand {
7580
51
                name: "vkGetPhysicalDeviceFeatures",
7581
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7582
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures),
7583
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures, vk::PFN_vkVoidFunction>(Self::get_physical_device_features)},
7584
51
            },
7585
51
            VulkanCommand {
7586
51
                name: "vkGetPhysicalDeviceFeatures2",
7587
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7588
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7589
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7590
51
            },
7591
51
            VulkanCommand {
7592
51
                name: "vkGetPhysicalDeviceFeatures2KHR",
7593
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7594
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFeatures2),
7595
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFeatures2, vk::PFN_vkVoidFunction>(Self::get_physical_device_features2)},
7596
51
            },
7597
51
            VulkanCommand {
7598
51
                name: "vkGetPhysicalDeviceFormatProperties",
7599
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7600
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties),
7601
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties)},
7602
51
            },
7603
51
            VulkanCommand {
7604
51
                name: "vkGetPhysicalDeviceFormatProperties2",
7605
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7606
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7607
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7608
51
            },
7609
51
            VulkanCommand {
7610
51
                name: "vkGetPhysicalDeviceFormatProperties2KHR",
7611
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7612
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFormatProperties2),
7613
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_format_properties2)},
7614
51
            },
7615
51
            VulkanCommand {
7616
51
                name: "vkGetPhysicalDeviceFragmentShadingRatesKHR",
7617
51
                features: smallvec![
Feature::Extension(Extension::KHRFragmentShadingRate)0
],
7618
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceFragmentShadingRatesKhr),
7619
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_fragment_shading_rates_khr)},
7620
51
            },
7621
51
            VulkanCommand {
7622
51
                name: "vkGetPhysicalDeviceImageFormatProperties",
7623
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7624
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties),
7625
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties)},
7626
51
            },
7627
51
            VulkanCommand {
7628
51
                name: "vkGetPhysicalDeviceImageFormatProperties2",
7629
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7630
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7631
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7632
51
            },
7633
51
            VulkanCommand {
7634
51
                name: "vkGetPhysicalDeviceImageFormatProperties2KHR",
7635
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7636
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceImageFormatProperties2),
7637
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_image_format_properties2)},
7638
51
            },
7639
51
            VulkanCommand {
7640
51
                name: "vkGetPhysicalDeviceMemoryProperties",
7641
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7642
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties),
7643
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties)},
7644
51
            },
7645
51
            VulkanCommand {
7646
51
                name: "vkGetPhysicalDeviceMemoryProperties2",
7647
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7648
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7649
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7650
51
            },
7651
51
            VulkanCommand {
7652
51
                name: "vkGetPhysicalDeviceMemoryProperties2KHR",
7653
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7654
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMemoryProperties2),
7655
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMemoryProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_memory_properties2)},
7656
51
            },
7657
51
            VulkanCommand {
7658
51
                name: "vkGetPhysicalDeviceMultisamplePropertiesEXT",
7659
51
                features: smallvec![
Feature::Extension(Extension::EXTSampleLocations)0
],
7660
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceMultisamplePropertiesExt),
7661
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_multisample_properties_ext)},
7662
51
            },
7663
51
            VulkanCommand {
7664
51
                name: "vkGetPhysicalDeviceOpticalFlowImageFormatsNV",
7665
51
                features: smallvec![
Feature::Extension(Extension::NVOpticalFlow)0
],
7666
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceOpticalFlowImageFormatsNv),
7667
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_optical_flow_image_formats_nv)},
7668
51
            },
7669
51
            VulkanCommand {
7670
51
                name: "vkGetPhysicalDevicePresentRectanglesKHR",
7671
51
                features: smallvec![
Feature::Extension(Extension::KHRSwapchain), Feature::Extension(Extension::KHRDeviceGroup)0
],
7672
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDevicePresentRectanglesKhr),
7673
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDevicePresentRectanglesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_present_rectangles_khr)},
7674
51
            },
7675
51
            VulkanCommand {
7676
51
                name: "vkGetPhysicalDeviceProperties",
7677
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7678
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties),
7679
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties)},
7680
51
            },
7681
51
            VulkanCommand {
7682
51
                name: "vkGetPhysicalDeviceProperties2",
7683
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7684
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7685
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7686
51
            },
7687
51
            VulkanCommand {
7688
51
                name: "vkGetPhysicalDeviceProperties2KHR",
7689
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7690
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceProperties2),
7691
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_properties2)},
7692
51
            },
7693
51
            VulkanCommand {
7694
51
                name: "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR",
7695
51
                features: smallvec![
Feature::Extension(Extension::KHRPerformanceQuery)0
],
7696
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKhr),
7697
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_performance_query_passes_khr)},
7698
51
            },
7699
51
            VulkanCommand {
7700
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties",
7701
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7702
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties),
7703
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties)},
7704
51
            },
7705
51
            VulkanCommand {
7706
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties2",
7707
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7708
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7709
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7710
51
            },
7711
51
            VulkanCommand {
7712
51
                name: "vkGetPhysicalDeviceQueueFamilyProperties2KHR",
7713
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7714
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceQueueFamilyProperties2),
7715
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceQueueFamilyProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_queue_family_properties2)},
7716
51
            },
7717
51
            VulkanCommand {
7718
51
                name: "vkGetPhysicalDeviceScreenPresentationSupportQNX",
7719
51
                features: smallvec![
Feature::Extension(Extension::QNXScreenSurface)0
],
7720
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceScreenPresentationSupportQnx),
7721
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX, vk::PFN_vkVoidFunction>(Self::get_physical_device_screen_presentation_support_qnx)},
7722
51
            },
7723
51
            VulkanCommand {
7724
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties",
7725
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 0})0
],
7726
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties),
7727
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties)},
7728
51
            },
7729
51
            VulkanCommand {
7730
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2",
7731
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 1})0
],
7732
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7733
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7734
51
            },
7735
51
            VulkanCommand {
7736
51
                name: "vkGetPhysicalDeviceSparseImageFormatProperties2KHR",
7737
51
                features: smallvec![
Feature::Extension(Extension::KHRGetPhysicalDeviceProperties2)0
],
7738
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSparseImageFormatProperties2),
7739
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, vk::PFN_vkVoidFunction>(Self::get_physical_device_sparse_image_format_properties2)},
7740
51
            },
7741
51
            VulkanCommand {
7742
51
                name: "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV",
7743
51
                features: smallvec![
Feature::Extension(Extension::NVCoverageReductionMode)0
],
7744
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNv),
7745
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, vk::PFN_vkVoidFunction>(Self::get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)},
7746
51
            },
7747
51
            VulkanCommand {
7748
51
                name: "vkGetPhysicalDeviceSurfaceCapabilities2EXT",
7749
51
                features: smallvec![
Feature::Extension(Extension::EXTDisplaySurfaceCounter)0
],
7750
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Ext),
7751
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_ext)},
7752
51
            },
7753
51
            VulkanCommand {
7754
51
                name: "vkGetPhysicalDeviceSurfaceCapabilities2KHR",
7755
51
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7756
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilities2Khr),
7757
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities2_khr)},
7758
51
            },
7759
51
            VulkanCommand {
7760
51
                name: "vkGetPhysicalDeviceSurfaceCapabilitiesKHR",
7761
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7762
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceCapabilitiesKhr),
7763
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_capabilities_khr)},
7764
51
            },
7765
51
            VulkanCommand {
7766
51
                name: "vkGetPhysicalDeviceSurfaceFormats2KHR",
7767
51
                features: smallvec![
Feature::Extension(Extension::KHRGetSurfaceCapabilities2)0
],
7768
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormats2Khr),
7769
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormats2KHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats2_khr)},
7770
51
            },
7771
51
            VulkanCommand {
7772
51
                name: "vkGetPhysicalDeviceSurfaceFormatsKHR",
7773
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7774
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceFormatsKhr),
7775
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceFormatsKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_formats_khr)},
7776
51
            },
7777
51
            VulkanCommand {
7778
51
                name: "vkGetPhysicalDeviceSurfacePresentModes2EXT",
7779
51
                features: smallvec![
Feature::Extension(Extension::EXTFullScreenExclusive)0
],
7780
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModes2Ext),
7781
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes2_ext)},
7782
51
            },
7783
51
            VulkanCommand {
7784
51
                name: "vkGetPhysicalDeviceSurfacePresentModesKHR",
7785
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7786
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfacePresentModesKhr),
7787
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfacePresentModesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_present_modes_khr)},
7788
51
            },
7789
51
            VulkanCommand {
7790
51
                name: "vkGetPhysicalDeviceSurfaceSupportKHR",
7791
51
                features: smallvec![
Feature::Extension(Extension::KHRSurface)0
],
7792
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceSurfaceSupportKhr),
7793
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceSurfaceSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_surface_support_khr)},
7794
51
            },
7795
51
            VulkanCommand {
7796
51
                name: "vkGetPhysicalDeviceToolProperties",
7797
51
                features: smallvec![
Feature::Core(ApiVersion { major: 1, minor: 3})0
],
7798
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7799
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7800
51
            },
7801
51
            VulkanCommand {
7802
51
                name: "vkGetPhysicalDeviceToolPropertiesEXT",
7803
51
                features: smallvec![
Feature::Extension(Extension::EXTToolingInfo)0
],
7804
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceToolProperties),
7805
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceToolProperties, vk::PFN_vkVoidFunction>(Self::get_physical_device_tool_properties)},
7806
51
            },
7807
51
            VulkanCommand {
7808
51
                name: "vkGetPhysicalDeviceVideoCapabilitiesKHR",
7809
51
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7810
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoCapabilitiesKhr),
7811
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_capabilities_khr)},
7812
51
            },
7813
51
            VulkanCommand {
7814
51
                name: "vkGetPhysicalDeviceVideoFormatPropertiesKHR",
7815
51
                features: smallvec![
Feature::Extension(Extension::KHRVideoQueue)0
],
7816
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceVideoFormatPropertiesKhr),
7817
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_video_format_properties_khr)},
7818
51
            },
7819
51
            VulkanCommand {
7820
51
                name: "vkGetPhysicalDeviceWaylandPresentationSupportKHR",
7821
51
                features: smallvec![
Feature::Extension(Extension::KHRWaylandSurface)0
],
7822
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWaylandPresentationSupportKhr),
7823
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_wayland_presentation_support_khr)},
7824
51
            },
7825
51
            VulkanCommand {
7826
51
                name: "vkGetPhysicalDeviceWin32PresentationSupportKHR",
7827
51
                features: smallvec![
Feature::Extension(Extension::KHRWin32Surface)0
],
7828
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceWin32PresentationSupportKhr),
7829
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_win32_presentation_support_khr)},
7830
51
            },
7831
51
            VulkanCommand {
7832
51
                name: "vkGetPhysicalDeviceXcbPresentationSupportKHR",
7833
51
                features: smallvec![
Feature::Extension(Extension::KHRXcbSurface)0
],
7834
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXcbPresentationSupportKhr),
7835
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xcb_presentation_support_khr)},
7836
51
            },
7837
51
            VulkanCommand {
7838
51
                name: "vkGetPhysicalDeviceXlibPresentationSupportKHR",
7839
51
                features: smallvec![
Feature::Extension(Extension::KHRXlibSurface)0
],
7840
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetPhysicalDeviceXlibPresentationSupportKhr),
7841
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR, vk::PFN_vkVoidFunction>(Self::get_physical_device_xlib_presentation_support_khr)},
7842
51
            },
7843
51
            VulkanCommand {
7844
51
                name: "vkGetRandROutputDisplayEXT",
7845
51
                features: smallvec![
Feature::Extension(Extension::EXTAcquireXlibDisplay)0
],
7846
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetRandROutputDisplayExt),
7847
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetRandROutputDisplayEXT, vk::PFN_vkVoidFunction>(Self::get_rand_r_output_display_ext)},
7848
51
            },
7849
51
            VulkanCommand {
7850
51
                name: "vkGetWinrtDisplayNV",
7851
51
                features: smallvec![
Feature::Extension(Extension::NVAcquireWinrtDisplay)0
],
7852
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::GetWinrtDisplayNv),
7853
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkGetWinrtDisplayNV, vk::PFN_vkVoidFunction>(Self::get_winrt_display_nv)},
7854
51
            },
7855
51
            VulkanCommand {
7856
51
                name: "vkReleaseDisplayEXT",
7857
51
                features: smallvec![
Feature::Extension(Extension::EXTDirectModeDisplay)0
],
7858
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::ReleaseDisplayExt),
7859
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkReleaseDisplayEXT, vk::PFN_vkVoidFunction>(Self::release_display_ext)},
7860
51
            },
7861
51
            VulkanCommand {
7862
51
                name: "vkSubmitDebugUtilsMessageEXT",
7863
51
                features: smallvec![
Feature::Extension(Extension::EXTDebugUtils)0
],
7864
51
                hooked: hooked_commands.contains(&LayerVulkanCommand::SubmitDebugUtilsMessageExt),
7865
51
                proc: unsafe { std::mem::transmute::<vk::PFN_vkSubmitDebugUtilsMessageEXT, vk::PFN_vkVoidFunction>(Self::submit_debug_utils_message_ext)},
7866
51
            },
7867
51
        ])
7868
51
    }
7869
0
    extern "system" fn get_physical_device_features(
7870
0
        physical_device: vk::PhysicalDevice,
7871
0
        p_features: *mut vk::PhysicalDeviceFeatures,
7872
0
    ) {
7873
0
        let global = Self::instance();
7874
0
        // vkGetPhysicalDeviceFeatures
7875
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7876
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7877
0
        let layer_result = instance_info
7878
0
            .customized_info
7879
0
            .borrow()
7880
0
            .hooks()
7881
0
            .get_physical_device_features(
7882
0
                physical_device,
7883
0
                unsafe { ptr_as_uninit_mut(p_features) }.unwrap(),
7884
0
            );
7885
0
        match layer_result {
7886
0
            LayerResult::Handled(res) => res,
7887
            LayerResult::Unhandled => unsafe {
7888
0
                (dispatch_table.get_physical_device_features)(physical_device, p_features)
7889
            },
7890
        }
7891
0
    }
7892
0
    extern "system" fn get_physical_device_format_properties(
7893
0
        physical_device: vk::PhysicalDevice,
7894
0
        format: vk::Format,
7895
0
        p_format_properties: *mut vk::FormatProperties,
7896
0
    ) {
7897
0
        let global = Self::instance();
7898
0
        // vkGetPhysicalDeviceFormatProperties
7899
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7900
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7901
0
        let layer_result = instance_info
7902
0
            .customized_info
7903
0
            .borrow()
7904
0
            .hooks()
7905
0
            .get_physical_device_format_properties(
7906
0
                physical_device,
7907
0
                format,
7908
0
                unsafe { ptr_as_uninit_mut(p_format_properties) }.unwrap(),
7909
0
            );
7910
0
        match layer_result {
7911
0
            LayerResult::Handled(res) => res,
7912
            LayerResult::Unhandled => unsafe {
7913
0
                (dispatch_table.get_physical_device_format_properties)(
7914
0
                    physical_device,
7915
0
                    format,
7916
0
                    p_format_properties,
7917
0
                )
7918
            },
7919
        }
7920
0
    }
7921
0
    extern "system" fn get_physical_device_image_format_properties(
7922
0
        physical_device: vk::PhysicalDevice,
7923
0
        format: vk::Format,
7924
0
        _type: vk::ImageType,
7925
0
        tiling: vk::ImageTiling,
7926
0
        usage: vk::ImageUsageFlags,
7927
0
        flags: vk::ImageCreateFlags,
7928
0
        p_image_format_properties: *mut vk::ImageFormatProperties,
7929
0
    ) -> vk::Result {
7930
0
        let global = Self::instance();
7931
0
        // vkGetPhysicalDeviceImageFormatProperties
7932
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7933
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7934
0
        let layer_result = instance_info
7935
0
            .customized_info
7936
0
            .borrow()
7937
0
            .hooks()
7938
0
            .get_physical_device_image_format_properties(
7939
0
                physical_device,
7940
0
                format,
7941
0
                _type,
7942
0
                tiling,
7943
0
                usage,
7944
0
                flags,
7945
0
                unsafe { ptr_as_uninit_mut(p_image_format_properties) }.unwrap(),
7946
0
            );
7947
0
        match layer_result {
7948
0
            LayerResult::Handled(res) => match res {
7949
0
                Ok(()) => vk::Result::SUCCESS,
7950
0
                Err(e) => e,
7951
            },
7952
            LayerResult::Unhandled => unsafe {
7953
0
                (dispatch_table.get_physical_device_image_format_properties)(
7954
0
                    physical_device,
7955
0
                    format,
7956
0
                    _type,
7957
0
                    tiling,
7958
0
                    usage,
7959
0
                    flags,
7960
0
                    p_image_format_properties,
7961
0
                )
7962
            },
7963
        }
7964
0
    }
7965
0
    extern "system" fn get_physical_device_properties(
7966
0
        physical_device: vk::PhysicalDevice,
7967
0
        p_properties: *mut vk::PhysicalDeviceProperties,
7968
0
    ) {
7969
0
        let global = Self::instance();
7970
0
        // vkGetPhysicalDeviceProperties
7971
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7972
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7973
0
        let layer_result = instance_info
7974
0
            .customized_info
7975
0
            .borrow()
7976
0
            .hooks()
7977
0
            .get_physical_device_properties(
7978
0
                physical_device,
7979
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
7980
0
            );
7981
0
        match layer_result {
7982
0
            LayerResult::Handled(res) => res,
7983
            LayerResult::Unhandled => unsafe {
7984
0
                (dispatch_table.get_physical_device_properties)(physical_device, p_properties)
7985
            },
7986
        }
7987
0
    }
7988
0
    extern "system" fn get_physical_device_queue_family_properties(
7989
0
        physical_device: vk::PhysicalDevice,
7990
0
        p_queue_family_property_count: *mut u32,
7991
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties,
7992
0
    ) {
7993
0
        let global = Self::instance();
7994
0
        // vkGetPhysicalDeviceQueueFamilyProperties
7995
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
7996
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
7997
0
        let layer_result = instance_info
7998
0
            .customized_info
7999
0
            .borrow()
8000
0
            .hooks()
8001
0
            .get_physical_device_queue_family_properties(
8002
0
                physical_device,
8003
0
                unsafe { ptr_as_uninit_mut(p_queue_family_property_count) }.unwrap(),
8004
0
                unsafe {
8005
0
                    maybe_uninit_slice_from_raw_parts_mut(
8006
0
                        p_queue_family_properties,
8007
0
                        p_queue_family_property_count,
8008
0
                    )
8009
0
                },
8010
0
            );
8011
0
        match layer_result {
8012
0
            LayerResult::Handled(res) => res,
8013
            LayerResult::Unhandled => unsafe {
8014
0
                (dispatch_table.get_physical_device_queue_family_properties)(
8015
0
                    physical_device,
8016
0
                    p_queue_family_property_count,
8017
0
                    p_queue_family_properties,
8018
0
                )
8019
            },
8020
        }
8021
0
    }
8022
0
    extern "system" fn get_physical_device_memory_properties(
8023
0
        physical_device: vk::PhysicalDevice,
8024
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties,
8025
0
    ) {
8026
0
        let global = Self::instance();
8027
0
        // vkGetPhysicalDeviceMemoryProperties
8028
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8029
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8030
0
        let layer_result = instance_info
8031
0
            .customized_info
8032
0
            .borrow()
8033
0
            .hooks()
8034
0
            .get_physical_device_memory_properties(
8035
0
                physical_device,
8036
0
                unsafe { ptr_as_uninit_mut(p_memory_properties) }.unwrap(),
8037
0
            );
8038
0
        match layer_result {
8039
0
            LayerResult::Handled(res) => res,
8040
            LayerResult::Unhandled => unsafe {
8041
0
                (dispatch_table.get_physical_device_memory_properties)(
8042
0
                    physical_device,
8043
0
                    p_memory_properties,
8044
0
                )
8045
            },
8046
        }
8047
0
    }
8048
0
    extern "system" fn get_physical_device_sparse_image_format_properties(
8049
0
        physical_device: vk::PhysicalDevice,
8050
0
        format: vk::Format,
8051
0
        _type: vk::ImageType,
8052
0
        samples: vk::SampleCountFlags,
8053
0
        usage: vk::ImageUsageFlags,
8054
0
        tiling: vk::ImageTiling,
8055
0
        p_property_count: *mut u32,
8056
0
        p_properties: *mut vk::SparseImageFormatProperties,
8057
0
    ) {
8058
0
        let global = Self::instance();
8059
0
        // vkGetPhysicalDeviceSparseImageFormatProperties
8060
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8061
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_0();
8062
0
        let layer_result = instance_info
8063
0
            .customized_info
8064
0
            .borrow()
8065
0
            .hooks()
8066
0
            .get_physical_device_sparse_image_format_properties(
8067
0
                physical_device,
8068
0
                format,
8069
0
                _type,
8070
0
                samples,
8071
0
                usage,
8072
0
                tiling,
8073
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8074
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8075
0
            );
8076
0
        match layer_result {
8077
0
            LayerResult::Handled(res) => res,
8078
            LayerResult::Unhandled => unsafe {
8079
0
                (dispatch_table.get_physical_device_sparse_image_format_properties)(
8080
0
                    physical_device,
8081
0
                    format,
8082
0
                    _type,
8083
0
                    samples,
8084
0
                    usage,
8085
0
                    tiling,
8086
0
                    p_property_count,
8087
0
                    p_properties,
8088
0
                )
8089
            },
8090
        }
8091
0
    }
8092
0
    extern "system" fn get_physical_device_features2(
8093
0
        physical_device: vk::PhysicalDevice,
8094
0
        p_features: *mut vk::PhysicalDeviceFeatures2,
8095
0
    ) {
8096
0
        let global = Self::instance();
8097
0
        // vkGetPhysicalDeviceFeatures2
8098
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8099
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8100
0
        let layer_result = instance_info
8101
0
            .customized_info
8102
0
            .borrow()
8103
0
            .hooks()
8104
0
            .get_physical_device_features2(
8105
0
                physical_device,
8106
0
                unsafe { ptr_as_uninit_mut(p_features) }.unwrap(),
8107
0
            );
8108
0
        match layer_result {
8109
0
            LayerResult::Handled(res) => res,
8110
            LayerResult::Unhandled => unsafe {
8111
0
                (dispatch_table.get_physical_device_features2)(physical_device, p_features)
8112
            },
8113
        }
8114
0
    }
8115
0
    extern "system" fn get_physical_device_properties2(
8116
0
        physical_device: vk::PhysicalDevice,
8117
0
        p_properties: *mut vk::PhysicalDeviceProperties2,
8118
0
    ) {
8119
0
        let global = Self::instance();
8120
0
        // vkGetPhysicalDeviceProperties2
8121
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8122
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8123
0
        let layer_result = instance_info
8124
0
            .customized_info
8125
0
            .borrow()
8126
0
            .hooks()
8127
0
            .get_physical_device_properties2(
8128
0
                physical_device,
8129
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
8130
0
            );
8131
0
        match layer_result {
8132
0
            LayerResult::Handled(res) => res,
8133
            LayerResult::Unhandled => unsafe {
8134
0
                (dispatch_table.get_physical_device_properties2)(physical_device, p_properties)
8135
            },
8136
        }
8137
0
    }
8138
0
    extern "system" fn get_physical_device_format_properties2(
8139
0
        physical_device: vk::PhysicalDevice,
8140
0
        format: vk::Format,
8141
0
        p_format_properties: *mut vk::FormatProperties2,
8142
0
    ) {
8143
0
        let global = Self::instance();
8144
0
        // vkGetPhysicalDeviceFormatProperties2
8145
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8146
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8147
0
        let layer_result = instance_info
8148
0
            .customized_info
8149
0
            .borrow()
8150
0
            .hooks()
8151
0
            .get_physical_device_format_properties2(
8152
0
                physical_device,
8153
0
                format,
8154
0
                unsafe { ptr_as_uninit_mut(p_format_properties) }.unwrap(),
8155
0
            );
8156
0
        match layer_result {
8157
0
            LayerResult::Handled(res) => res,
8158
            LayerResult::Unhandled => unsafe {
8159
0
                (dispatch_table.get_physical_device_format_properties2)(
8160
0
                    physical_device,
8161
0
                    format,
8162
0
                    p_format_properties,
8163
0
                )
8164
            },
8165
        }
8166
0
    }
8167
0
    extern "system" fn get_physical_device_image_format_properties2(
8168
0
        physical_device: vk::PhysicalDevice,
8169
0
        p_image_format_info: *const vk::PhysicalDeviceImageFormatInfo2,
8170
0
        p_image_format_properties: *mut vk::ImageFormatProperties2,
8171
0
    ) -> vk::Result {
8172
0
        let global = Self::instance();
8173
0
        // vkGetPhysicalDeviceImageFormatProperties2
8174
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8175
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8176
0
        let layer_result = instance_info
8177
0
            .customized_info
8178
0
            .borrow()
8179
0
            .hooks()
8180
0
            .get_physical_device_image_format_properties2(
8181
0
                physical_device,
8182
0
                unsafe { p_image_format_info.as_ref() }.unwrap(),
8183
0
                unsafe { ptr_as_uninit_mut(p_image_format_properties) }.unwrap(),
8184
0
            );
8185
0
        match layer_result {
8186
0
            LayerResult::Handled(res) => match res {
8187
0
                Ok(()) => vk::Result::SUCCESS,
8188
0
                Err(e) => e,
8189
            },
8190
            LayerResult::Unhandled => unsafe {
8191
0
                (dispatch_table.get_physical_device_image_format_properties2)(
8192
0
                    physical_device,
8193
0
                    p_image_format_info,
8194
0
                    p_image_format_properties,
8195
0
                )
8196
            },
8197
        }
8198
0
    }
8199
0
    extern "system" fn get_physical_device_queue_family_properties2(
8200
0
        physical_device: vk::PhysicalDevice,
8201
0
        p_queue_family_property_count: *mut u32,
8202
0
        p_queue_family_properties: *mut vk::QueueFamilyProperties2,
8203
0
    ) {
8204
0
        let global = Self::instance();
8205
0
        // vkGetPhysicalDeviceQueueFamilyProperties2
8206
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8207
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8208
0
        let layer_result = instance_info
8209
0
            .customized_info
8210
0
            .borrow()
8211
0
            .hooks()
8212
0
            .get_physical_device_queue_family_properties2(
8213
0
                physical_device,
8214
0
                unsafe { ptr_as_uninit_mut(p_queue_family_property_count) }.unwrap(),
8215
0
                unsafe {
8216
0
                    maybe_uninit_slice_from_raw_parts_mut(
8217
0
                        p_queue_family_properties,
8218
0
                        p_queue_family_property_count,
8219
0
                    )
8220
0
                },
8221
0
            );
8222
0
        match layer_result {
8223
0
            LayerResult::Handled(res) => res,
8224
            LayerResult::Unhandled => unsafe {
8225
0
                (dispatch_table.get_physical_device_queue_family_properties2)(
8226
0
                    physical_device,
8227
0
                    p_queue_family_property_count,
8228
0
                    p_queue_family_properties,
8229
0
                )
8230
            },
8231
        }
8232
0
    }
8233
0
    extern "system" fn get_physical_device_memory_properties2(
8234
0
        physical_device: vk::PhysicalDevice,
8235
0
        p_memory_properties: *mut vk::PhysicalDeviceMemoryProperties2,
8236
0
    ) {
8237
0
        let global = Self::instance();
8238
0
        // vkGetPhysicalDeviceMemoryProperties2
8239
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8240
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8241
0
        let layer_result = instance_info
8242
0
            .customized_info
8243
0
            .borrow()
8244
0
            .hooks()
8245
0
            .get_physical_device_memory_properties2(
8246
0
                physical_device,
8247
0
                unsafe { ptr_as_uninit_mut(p_memory_properties) }.unwrap(),
8248
0
            );
8249
0
        match layer_result {
8250
0
            LayerResult::Handled(res) => res,
8251
            LayerResult::Unhandled => unsafe {
8252
0
                (dispatch_table.get_physical_device_memory_properties2)(
8253
0
                    physical_device,
8254
0
                    p_memory_properties,
8255
0
                )
8256
            },
8257
        }
8258
0
    }
8259
0
    extern "system" fn get_physical_device_sparse_image_format_properties2(
8260
0
        physical_device: vk::PhysicalDevice,
8261
0
        p_format_info: *const vk::PhysicalDeviceSparseImageFormatInfo2,
8262
0
        p_property_count: *mut u32,
8263
0
        p_properties: *mut vk::SparseImageFormatProperties2,
8264
0
    ) {
8265
0
        let global = Self::instance();
8266
0
        // vkGetPhysicalDeviceSparseImageFormatProperties2
8267
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8268
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8269
0
        let layer_result = instance_info
8270
0
            .customized_info
8271
0
            .borrow()
8272
0
            .hooks()
8273
0
            .get_physical_device_sparse_image_format_properties2(
8274
0
                physical_device,
8275
0
                unsafe { p_format_info.as_ref() }.unwrap(),
8276
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8277
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8278
0
            );
8279
0
        match layer_result {
8280
0
            LayerResult::Handled(res) => res,
8281
            LayerResult::Unhandled => unsafe {
8282
0
                (dispatch_table.get_physical_device_sparse_image_format_properties2)(
8283
0
                    physical_device,
8284
0
                    p_format_info,
8285
0
                    p_property_count,
8286
0
                    p_properties,
8287
0
                )
8288
            },
8289
        }
8290
0
    }
8291
0
    extern "system" fn get_physical_device_external_buffer_properties(
8292
0
        physical_device: vk::PhysicalDevice,
8293
0
        p_external_buffer_info: *const vk::PhysicalDeviceExternalBufferInfo,
8294
0
        p_external_buffer_properties: *mut vk::ExternalBufferProperties,
8295
0
    ) {
8296
0
        let global = Self::instance();
8297
0
        // vkGetPhysicalDeviceExternalBufferProperties
8298
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8299
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8300
0
        let layer_result = instance_info
8301
0
            .customized_info
8302
0
            .borrow()
8303
0
            .hooks()
8304
0
            .get_physical_device_external_buffer_properties(
8305
0
                physical_device,
8306
0
                unsafe { p_external_buffer_info.as_ref() }.unwrap(),
8307
0
                unsafe { ptr_as_uninit_mut(p_external_buffer_properties) }.unwrap(),
8308
0
            );
8309
0
        match layer_result {
8310
0
            LayerResult::Handled(res) => res,
8311
            LayerResult::Unhandled => unsafe {
8312
0
                (dispatch_table.get_physical_device_external_buffer_properties)(
8313
0
                    physical_device,
8314
0
                    p_external_buffer_info,
8315
0
                    p_external_buffer_properties,
8316
0
                )
8317
            },
8318
        }
8319
0
    }
8320
0
    extern "system" fn get_physical_device_external_fence_properties(
8321
0
        physical_device: vk::PhysicalDevice,
8322
0
        p_external_fence_info: *const vk::PhysicalDeviceExternalFenceInfo,
8323
0
        p_external_fence_properties: *mut vk::ExternalFenceProperties,
8324
0
    ) {
8325
0
        let global = Self::instance();
8326
0
        // vkGetPhysicalDeviceExternalFenceProperties
8327
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8328
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8329
0
        let layer_result = instance_info
8330
0
            .customized_info
8331
0
            .borrow()
8332
0
            .hooks()
8333
0
            .get_physical_device_external_fence_properties(
8334
0
                physical_device,
8335
0
                unsafe { p_external_fence_info.as_ref() }.unwrap(),
8336
0
                unsafe { ptr_as_uninit_mut(p_external_fence_properties) }.unwrap(),
8337
0
            );
8338
0
        match layer_result {
8339
0
            LayerResult::Handled(res) => res,
8340
            LayerResult::Unhandled => unsafe {
8341
0
                (dispatch_table.get_physical_device_external_fence_properties)(
8342
0
                    physical_device,
8343
0
                    p_external_fence_info,
8344
0
                    p_external_fence_properties,
8345
0
                )
8346
            },
8347
        }
8348
0
    }
8349
0
    extern "system" fn get_physical_device_external_semaphore_properties(
8350
0
        physical_device: vk::PhysicalDevice,
8351
0
        p_external_semaphore_info: *const vk::PhysicalDeviceExternalSemaphoreInfo,
8352
0
        p_external_semaphore_properties: *mut vk::ExternalSemaphoreProperties,
8353
0
    ) {
8354
0
        let global = Self::instance();
8355
0
        // vkGetPhysicalDeviceExternalSemaphoreProperties
8356
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8357
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_1();
8358
0
        let layer_result = instance_info
8359
0
            .customized_info
8360
0
            .borrow()
8361
0
            .hooks()
8362
0
            .get_physical_device_external_semaphore_properties(
8363
0
                physical_device,
8364
0
                unsafe { p_external_semaphore_info.as_ref() }.unwrap(),
8365
0
                unsafe { ptr_as_uninit_mut(p_external_semaphore_properties) }.unwrap(),
8366
0
            );
8367
0
        match layer_result {
8368
0
            LayerResult::Handled(res) => res,
8369
            LayerResult::Unhandled => unsafe {
8370
0
                (dispatch_table.get_physical_device_external_semaphore_properties)(
8371
0
                    physical_device,
8372
0
                    p_external_semaphore_info,
8373
0
                    p_external_semaphore_properties,
8374
0
                )
8375
            },
8376
        }
8377
0
    }
8378
0
    extern "system" fn get_physical_device_tool_properties(
8379
0
        physical_device: vk::PhysicalDevice,
8380
0
        p_tool_count: *mut u32,
8381
0
        p_tool_properties: *mut vk::PhysicalDeviceToolProperties,
8382
0
    ) -> vk::Result {
8383
0
        let global = Self::instance();
8384
0
        // vkGetPhysicalDeviceToolProperties
8385
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8386
0
        let dispatch_table = &instance_info.dispatch_table.core.fp_v1_3();
8387
0
        let layer_result = instance_info
8388
0
            .customized_info
8389
0
            .borrow()
8390
0
            .hooks()
8391
0
            .get_physical_device_tool_properties(
8392
0
                physical_device,
8393
0
                unsafe { ptr_as_uninit_mut(p_tool_count) }.unwrap(),
8394
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_tool_properties, p_tool_count) },
8395
0
            );
8396
0
        match layer_result {
8397
0
            LayerResult::Handled(res) => match res {
8398
0
                Ok(()) => vk::Result::SUCCESS,
8399
0
                Err(e) => e,
8400
            },
8401
            LayerResult::Unhandled => unsafe {
8402
0
                (dispatch_table.get_physical_device_tool_properties)(
8403
0
                    physical_device,
8404
0
                    p_tool_count,
8405
0
                    p_tool_properties,
8406
0
                )
8407
            },
8408
        }
8409
0
    }
8410
1
    extern "system" fn destroy_surface_khr(
8411
1
        instance: vk::Instance,
8412
1
        surface: vk::SurfaceKHR,
8413
1
        p_allocator: *const vk::AllocationCallbacks,
8414
1
    ) {
8415
1
        let global = Self::instance();
8416
1
        // vkDestroySurfaceKHR
8417
1
        let instance_info = global.get_instance_info(instance).unwrap();
8418
1
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8419
1
        let layer_result = instance_info
8420
1
            .customized_info
8421
1
            .borrow()
8422
1
            .hooks()
8423
1
            .destroy_surface_khr(surface, unsafe { p_allocator.as_ref() });
8424
1
        match layer_result {
8425
0
            LayerResult::Handled(res) => res,
8426
            LayerResult::Unhandled => unsafe {
8427
1
                (dispatch_table.destroy_surface_khr)(instance, surface, p_allocator)
8428
            },
8429
        }
8430
1
    }
8431
0
    extern "system" fn get_physical_device_surface_support_khr(
8432
0
        physical_device: vk::PhysicalDevice,
8433
0
        queue_family_index: u32,
8434
0
        surface: vk::SurfaceKHR,
8435
0
        p_supported: *mut vk::Bool32,
8436
0
    ) -> vk::Result {
8437
0
        let global = Self::instance();
8438
0
        // vkGetPhysicalDeviceSurfaceSupportKHR
8439
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8440
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8441
0
        let layer_result = instance_info
8442
0
            .customized_info
8443
0
            .borrow()
8444
0
            .hooks()
8445
0
            .get_physical_device_surface_support_khr(physical_device, queue_family_index, surface);
8446
0
        match layer_result {
8447
0
            LayerResult::Handled(res) => match res {
8448
0
                Ok(res) => {
8449
0
                    *unsafe { p_supported.as_mut() }.unwrap() =
8450
0
                        if res { vk::TRUE } else { vk::FALSE };
8451
0
                    vk::Result::SUCCESS
8452
                }
8453
0
                Err(e) => e,
8454
            },
8455
            LayerResult::Unhandled => unsafe {
8456
0
                (dispatch_table.get_physical_device_surface_support_khr)(
8457
0
                    physical_device,
8458
0
                    queue_family_index,
8459
0
                    surface,
8460
0
                    p_supported,
8461
0
                )
8462
            },
8463
        }
8464
0
    }
8465
0
    extern "system" fn get_physical_device_surface_capabilities_khr(
8466
0
        physical_device: vk::PhysicalDevice,
8467
0
        surface: vk::SurfaceKHR,
8468
0
        p_surface_capabilities: *mut vk::SurfaceCapabilitiesKHR,
8469
0
    ) -> vk::Result {
8470
0
        let global = Self::instance();
8471
0
        // vkGetPhysicalDeviceSurfaceCapabilitiesKHR
8472
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8473
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8474
0
        let layer_result = instance_info
8475
0
            .customized_info
8476
0
            .borrow()
8477
0
            .hooks()
8478
0
            .get_physical_device_surface_capabilities_khr(
8479
0
                physical_device,
8480
0
                surface,
8481
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
8482
0
            );
8483
0
        match layer_result {
8484
0
            LayerResult::Handled(res) => match res {
8485
0
                Ok(()) => vk::Result::SUCCESS,
8486
0
                Err(e) => e,
8487
            },
8488
            LayerResult::Unhandled => unsafe {
8489
0
                (dispatch_table.get_physical_device_surface_capabilities_khr)(
8490
0
                    physical_device,
8491
0
                    surface,
8492
0
                    p_surface_capabilities,
8493
0
                )
8494
            },
8495
        }
8496
0
    }
8497
0
    extern "system" fn get_physical_device_surface_formats_khr(
8498
0
        physical_device: vk::PhysicalDevice,
8499
0
        surface: vk::SurfaceKHR,
8500
0
        p_surface_format_count: *mut u32,
8501
0
        p_surface_formats: *mut vk::SurfaceFormatKHR,
8502
0
    ) -> vk::Result {
8503
0
        let global = Self::instance();
8504
0
        // vkGetPhysicalDeviceSurfaceFormatsKHR
8505
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8506
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8507
0
        let layer_result = instance_info
8508
0
            .customized_info
8509
0
            .borrow()
8510
0
            .hooks()
8511
0
            .get_physical_device_surface_formats_khr(
8512
0
                physical_device,
8513
0
                surface,
8514
0
                unsafe { ptr_as_uninit_mut(p_surface_format_count) }.unwrap(),
8515
0
                unsafe {
8516
0
                    maybe_uninit_slice_from_raw_parts_mut(p_surface_formats, p_surface_format_count)
8517
0
                },
8518
0
            );
8519
0
        match layer_result {
8520
0
            LayerResult::Handled(res) => match res {
8521
0
                Ok(()) => vk::Result::SUCCESS,
8522
0
                Err(e) => e,
8523
            },
8524
            LayerResult::Unhandled => unsafe {
8525
0
                (dispatch_table.get_physical_device_surface_formats_khr)(
8526
0
                    physical_device,
8527
0
                    surface,
8528
0
                    p_surface_format_count,
8529
0
                    p_surface_formats,
8530
0
                )
8531
            },
8532
        }
8533
0
    }
8534
0
    extern "system" fn get_physical_device_surface_present_modes_khr(
8535
0
        physical_device: vk::PhysicalDevice,
8536
0
        surface: vk::SurfaceKHR,
8537
0
        p_present_mode_count: *mut u32,
8538
0
        p_present_modes: *mut vk::PresentModeKHR,
8539
0
    ) -> vk::Result {
8540
0
        let global = Self::instance();
8541
0
        // vkGetPhysicalDeviceSurfacePresentModesKHR
8542
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8543
0
        let dispatch_table = &instance_info.dispatch_table.khr_surface;
8544
0
        let layer_result = instance_info
8545
0
            .customized_info
8546
0
            .borrow()
8547
0
            .hooks()
8548
0
            .get_physical_device_surface_present_modes_khr(physical_device, surface);
8549
0
        match layer_result {
8550
0
            LayerResult::Handled(res) => match res {
8551
0
                Ok(res) => unsafe {
8552
0
                    fill_vk_out_array(
8553
0
                        &res,
8554
0
                        NonNull::new(p_present_mode_count).unwrap(),
8555
0
                        p_present_modes,
8556
0
                    )
8557
                },
8558
0
                Err(e) => e,
8559
            },
8560
            LayerResult::Unhandled => unsafe {
8561
0
                (dispatch_table.get_physical_device_surface_present_modes_khr)(
8562
0
                    physical_device,
8563
0
                    surface,
8564
0
                    p_present_mode_count,
8565
0
                    p_present_modes,
8566
0
                )
8567
            },
8568
        }
8569
0
    }
8570
0
    extern "system" fn get_physical_device_present_rectangles_khr(
8571
0
        physical_device: vk::PhysicalDevice,
8572
0
        surface: vk::SurfaceKHR,
8573
0
        p_rect_count: *mut u32,
8574
0
        p_rects: *mut vk::Rect2D,
8575
0
    ) -> vk::Result {
8576
0
        let global = Self::instance();
8577
0
        // vkGetPhysicalDevicePresentRectanglesKHR
8578
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8579
0
        let dispatch_table = &instance_info.dispatch_table.khr_swapchain;
8580
0
        let layer_result = instance_info
8581
0
            .customized_info
8582
0
            .borrow()
8583
0
            .hooks()
8584
0
            .get_physical_device_present_rectangles_khr(
8585
0
                physical_device,
8586
0
                surface,
8587
0
                unsafe { ptr_as_uninit_mut(p_rect_count) }.unwrap(),
8588
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_rects, p_rect_count) },
8589
0
            );
8590
0
        match layer_result {
8591
0
            LayerResult::Handled(res) => match res {
8592
0
                Ok(()) => vk::Result::SUCCESS,
8593
0
                Err(e) => e,
8594
            },
8595
            LayerResult::Unhandled => unsafe {
8596
0
                (dispatch_table.get_physical_device_present_rectangles_khr)(
8597
0
                    physical_device,
8598
0
                    surface,
8599
0
                    p_rect_count,
8600
0
                    p_rects,
8601
0
                )
8602
            },
8603
        }
8604
0
    }
8605
0
    extern "system" fn get_physical_device_display_properties_khr(
8606
0
        physical_device: vk::PhysicalDevice,
8607
0
        p_property_count: *mut u32,
8608
0
        p_properties: *mut vk::DisplayPropertiesKHR,
8609
0
    ) -> vk::Result {
8610
0
        let global = Self::instance();
8611
0
        // vkGetPhysicalDeviceDisplayPropertiesKHR
8612
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8613
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8614
0
        let layer_result = instance_info
8615
0
            .customized_info
8616
0
            .borrow()
8617
0
            .hooks()
8618
0
            .get_physical_device_display_properties_khr(
8619
0
                physical_device,
8620
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8621
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8622
0
            );
8623
0
        match layer_result {
8624
0
            LayerResult::Handled(res) => match res {
8625
0
                Ok(()) => vk::Result::SUCCESS,
8626
0
                Err(e) => e,
8627
            },
8628
            LayerResult::Unhandled => unsafe {
8629
0
                (dispatch_table.get_physical_device_display_properties_khr)(
8630
0
                    physical_device,
8631
0
                    p_property_count,
8632
0
                    p_properties,
8633
0
                )
8634
            },
8635
        }
8636
0
    }
8637
0
    extern "system" fn get_physical_device_display_plane_properties_khr(
8638
0
        physical_device: vk::PhysicalDevice,
8639
0
        p_property_count: *mut u32,
8640
0
        p_properties: *mut vk::DisplayPlanePropertiesKHR,
8641
0
    ) -> vk::Result {
8642
0
        let global = Self::instance();
8643
0
        // vkGetPhysicalDeviceDisplayPlanePropertiesKHR
8644
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8645
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8646
0
        let layer_result = instance_info
8647
0
            .customized_info
8648
0
            .borrow()
8649
0
            .hooks()
8650
0
            .get_physical_device_display_plane_properties_khr(
8651
0
                physical_device,
8652
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8653
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8654
0
            );
8655
0
        match layer_result {
8656
0
            LayerResult::Handled(res) => match res {
8657
0
                Ok(()) => vk::Result::SUCCESS,
8658
0
                Err(e) => e,
8659
            },
8660
            LayerResult::Unhandled => unsafe {
8661
0
                (dispatch_table.get_physical_device_display_plane_properties_khr)(
8662
0
                    physical_device,
8663
0
                    p_property_count,
8664
0
                    p_properties,
8665
0
                )
8666
            },
8667
        }
8668
0
    }
8669
0
    extern "system" fn get_display_plane_supported_displays_khr(
8670
0
        physical_device: vk::PhysicalDevice,
8671
0
        plane_index: u32,
8672
0
        p_display_count: *mut u32,
8673
0
        p_displays: *mut vk::DisplayKHR,
8674
0
    ) -> vk::Result {
8675
0
        let global = Self::instance();
8676
0
        // vkGetDisplayPlaneSupportedDisplaysKHR
8677
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8678
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8679
0
        let layer_result = instance_info
8680
0
            .customized_info
8681
0
            .borrow()
8682
0
            .hooks()
8683
0
            .get_display_plane_supported_displays_khr(physical_device, plane_index);
8684
0
        match layer_result {
8685
0
            LayerResult::Handled(res) => match res {
8686
0
                Ok(res) => unsafe {
8687
0
                    fill_vk_out_array(&res, NonNull::new(p_display_count).unwrap(), p_displays)
8688
                },
8689
0
                Err(e) => e,
8690
            },
8691
            LayerResult::Unhandled => unsafe {
8692
0
                (dispatch_table.get_display_plane_supported_displays_khr)(
8693
0
                    physical_device,
8694
0
                    plane_index,
8695
0
                    p_display_count,
8696
0
                    p_displays,
8697
0
                )
8698
            },
8699
        }
8700
0
    }
8701
0
    extern "system" fn get_display_mode_properties_khr(
8702
0
        physical_device: vk::PhysicalDevice,
8703
0
        display: vk::DisplayKHR,
8704
0
        p_property_count: *mut u32,
8705
0
        p_properties: *mut vk::DisplayModePropertiesKHR,
8706
0
    ) -> vk::Result {
8707
0
        let global = Self::instance();
8708
0
        // vkGetDisplayModePropertiesKHR
8709
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8710
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8711
0
        let layer_result = instance_info
8712
0
            .customized_info
8713
0
            .borrow()
8714
0
            .hooks()
8715
0
            .get_display_mode_properties_khr(
8716
0
                physical_device,
8717
0
                display,
8718
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
8719
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
8720
0
            );
8721
0
        match layer_result {
8722
0
            LayerResult::Handled(res) => match res {
8723
0
                Ok(()) => vk::Result::SUCCESS,
8724
0
                Err(e) => e,
8725
            },
8726
            LayerResult::Unhandled => unsafe {
8727
0
                (dispatch_table.get_display_mode_properties_khr)(
8728
0
                    physical_device,
8729
0
                    display,
8730
0
                    p_property_count,
8731
0
                    p_properties,
8732
0
                )
8733
            },
8734
        }
8735
0
    }
8736
0
    extern "system" fn create_display_mode_khr(
8737
0
        physical_device: vk::PhysicalDevice,
8738
0
        display: vk::DisplayKHR,
8739
0
        p_create_info: *const vk::DisplayModeCreateInfoKHR,
8740
0
        p_allocator: *const vk::AllocationCallbacks,
8741
0
        p_mode: *mut vk::DisplayModeKHR,
8742
0
    ) -> vk::Result {
8743
0
        let global = Self::instance();
8744
0
        // vkCreateDisplayModeKHR
8745
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8746
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8747
0
        let layer_result = instance_info
8748
0
            .customized_info
8749
0
            .borrow()
8750
0
            .hooks()
8751
0
            .create_display_mode_khr(
8752
0
                physical_device,
8753
0
                display,
8754
0
                unsafe { p_create_info.as_ref() }.unwrap(),
8755
0
                unsafe { p_allocator.as_ref() },
8756
0
            );
8757
0
        match layer_result {
8758
0
            LayerResult::Handled(res) => match res {
8759
0
                Ok(res) => {
8760
0
                    *unsafe { p_mode.as_mut() }.unwrap() = res;
8761
0
                    vk::Result::SUCCESS
8762
                }
8763
0
                Err(e) => e,
8764
            },
8765
            LayerResult::Unhandled => unsafe {
8766
0
                (dispatch_table.create_display_mode_khr)(
8767
0
                    physical_device,
8768
0
                    display,
8769
0
                    p_create_info,
8770
0
                    p_allocator,
8771
0
                    p_mode,
8772
0
                )
8773
            },
8774
        }
8775
0
    }
8776
0
    extern "system" fn get_display_plane_capabilities_khr(
8777
0
        physical_device: vk::PhysicalDevice,
8778
0
        mode: vk::DisplayModeKHR,
8779
0
        plane_index: u32,
8780
0
        p_capabilities: *mut vk::DisplayPlaneCapabilitiesKHR,
8781
0
    ) -> vk::Result {
8782
0
        let global = Self::instance();
8783
0
        // vkGetDisplayPlaneCapabilitiesKHR
8784
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8785
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8786
0
        let layer_result = instance_info
8787
0
            .customized_info
8788
0
            .borrow()
8789
0
            .hooks()
8790
0
            .get_display_plane_capabilities_khr(
8791
0
                physical_device,
8792
0
                mode,
8793
0
                plane_index,
8794
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
8795
0
            );
8796
0
        match layer_result {
8797
0
            LayerResult::Handled(res) => match res {
8798
0
                Ok(()) => vk::Result::SUCCESS,
8799
0
                Err(e) => e,
8800
            },
8801
            LayerResult::Unhandled => unsafe {
8802
0
                (dispatch_table.get_display_plane_capabilities_khr)(
8803
0
                    physical_device,
8804
0
                    mode,
8805
0
                    plane_index,
8806
0
                    p_capabilities,
8807
0
                )
8808
            },
8809
        }
8810
0
    }
8811
0
    extern "system" fn create_display_plane_surface_khr(
8812
0
        instance: vk::Instance,
8813
0
        p_create_info: *const vk::DisplaySurfaceCreateInfoKHR,
8814
0
        p_allocator: *const vk::AllocationCallbacks,
8815
0
        p_surface: *mut vk::SurfaceKHR,
8816
0
    ) -> vk::Result {
8817
0
        let global = Self::instance();
8818
0
        // vkCreateDisplayPlaneSurfaceKHR
8819
0
        let instance_info = global.get_instance_info(instance).unwrap();
8820
0
        let dispatch_table = &instance_info.dispatch_table.khr_display;
8821
0
        let layer_result = instance_info
8822
0
            .customized_info
8823
0
            .borrow()
8824
0
            .hooks()
8825
0
            .create_display_plane_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8826
0
                p_allocator.as_ref()
8827
0
            });
8828
0
        match layer_result {
8829
0
            LayerResult::Handled(res) => match res {
8830
0
                Ok(res) => {
8831
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8832
0
                    vk::Result::SUCCESS
8833
                }
8834
0
                Err(e) => e,
8835
            },
8836
            LayerResult::Unhandled => unsafe {
8837
0
                (dispatch_table.create_display_plane_surface_khr)(
8838
0
                    instance,
8839
0
                    p_create_info,
8840
0
                    p_allocator,
8841
0
                    p_surface,
8842
0
                )
8843
            },
8844
        }
8845
0
    }
8846
0
    extern "system" fn create_xlib_surface_khr(
8847
0
        instance: vk::Instance,
8848
0
        p_create_info: *const vk::XlibSurfaceCreateInfoKHR,
8849
0
        p_allocator: *const vk::AllocationCallbacks,
8850
0
        p_surface: *mut vk::SurfaceKHR,
8851
0
    ) -> vk::Result {
8852
0
        let global = Self::instance();
8853
0
        // vkCreateXlibSurfaceKHR
8854
0
        let instance_info = global.get_instance_info(instance).unwrap();
8855
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8856
0
        let layer_result = instance_info
8857
0
            .customized_info
8858
0
            .borrow()
8859
0
            .hooks()
8860
0
            .create_xlib_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8861
0
                p_allocator.as_ref()
8862
0
            });
8863
0
        match layer_result {
8864
0
            LayerResult::Handled(res) => match res {
8865
0
                Ok(res) => {
8866
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8867
0
                    vk::Result::SUCCESS
8868
                }
8869
0
                Err(e) => e,
8870
            },
8871
            LayerResult::Unhandled => unsafe {
8872
0
                (dispatch_table.create_xlib_surface_khr)(
8873
0
                    instance,
8874
0
                    p_create_info,
8875
0
                    p_allocator,
8876
0
                    p_surface,
8877
0
                )
8878
            },
8879
        }
8880
0
    }
8881
0
    extern "system" fn get_physical_device_xlib_presentation_support_khr(
8882
0
        physical_device: vk::PhysicalDevice,
8883
0
        queue_family_index: u32,
8884
0
        dpy: *mut vk::Display,
8885
0
        visual_id: vk::VisualID,
8886
0
    ) -> vk::Bool32 {
8887
0
        let global = Self::instance();
8888
0
        // vkGetPhysicalDeviceXlibPresentationSupportKHR
8889
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8890
0
        let dispatch_table = &instance_info.dispatch_table.khr_xlib_surface;
8891
0
        let layer_result = instance_info
8892
0
            .customized_info
8893
0
            .borrow()
8894
0
            .hooks()
8895
0
            .get_physical_device_xlib_presentation_support_khr(
8896
0
                physical_device,
8897
0
                queue_family_index,
8898
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
8899
0
                visual_id,
8900
0
            );
8901
0
        match layer_result {
8902
0
            LayerResult::Handled(res) => {
8903
0
                if res {
8904
0
                    vk::TRUE
8905
                } else {
8906
0
                    vk::FALSE
8907
                }
8908
            }
8909
            LayerResult::Unhandled => unsafe {
8910
0
                (dispatch_table.get_physical_device_xlib_presentation_support_khr)(
8911
0
                    physical_device,
8912
0
                    queue_family_index,
8913
0
                    dpy,
8914
0
                    visual_id,
8915
0
                )
8916
            },
8917
        }
8918
0
    }
8919
0
    extern "system" fn create_xcb_surface_khr(
8920
0
        instance: vk::Instance,
8921
0
        p_create_info: *const vk::XcbSurfaceCreateInfoKHR,
8922
0
        p_allocator: *const vk::AllocationCallbacks,
8923
0
        p_surface: *mut vk::SurfaceKHR,
8924
0
    ) -> vk::Result {
8925
0
        let global = Self::instance();
8926
0
        // vkCreateXcbSurfaceKHR
8927
0
        let instance_info = global.get_instance_info(instance).unwrap();
8928
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
8929
0
        let layer_result = instance_info
8930
0
            .customized_info
8931
0
            .borrow()
8932
0
            .hooks()
8933
0
            .create_xcb_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
8934
0
                p_allocator.as_ref()
8935
0
            });
8936
0
        match layer_result {
8937
0
            LayerResult::Handled(res) => match res {
8938
0
                Ok(res) => {
8939
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
8940
0
                    vk::Result::SUCCESS
8941
                }
8942
0
                Err(e) => e,
8943
            },
8944
            LayerResult::Unhandled => unsafe {
8945
0
                (dispatch_table.create_xcb_surface_khr)(
8946
0
                    instance,
8947
0
                    p_create_info,
8948
0
                    p_allocator,
8949
0
                    p_surface,
8950
0
                )
8951
            },
8952
        }
8953
0
    }
8954
0
    extern "system" fn get_physical_device_xcb_presentation_support_khr(
8955
0
        physical_device: vk::PhysicalDevice,
8956
0
        queue_family_index: u32,
8957
0
        connection: *mut vk::xcb_connection_t,
8958
0
        visual_id: vk::xcb_visualid_t,
8959
0
    ) -> vk::Bool32 {
8960
0
        let global = Self::instance();
8961
0
        // vkGetPhysicalDeviceXcbPresentationSupportKHR
8962
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
8963
0
        let dispatch_table = &instance_info.dispatch_table.khr_xcb_surface;
8964
0
        let layer_result = instance_info
8965
0
            .customized_info
8966
0
            .borrow()
8967
0
            .hooks()
8968
0
            .get_physical_device_xcb_presentation_support_khr(
8969
0
                physical_device,
8970
0
                queue_family_index,
8971
0
                connection,
8972
0
                visual_id,
8973
0
            );
8974
0
        match layer_result {
8975
0
            LayerResult::Handled(res) => {
8976
0
                if res {
8977
0
                    vk::TRUE
8978
                } else {
8979
0
                    vk::FALSE
8980
                }
8981
            }
8982
            LayerResult::Unhandled => unsafe {
8983
0
                (dispatch_table.get_physical_device_xcb_presentation_support_khr)(
8984
0
                    physical_device,
8985
0
                    queue_family_index,
8986
0
                    connection,
8987
0
                    visual_id,
8988
0
                )
8989
            },
8990
        }
8991
0
    }
8992
0
    extern "system" fn create_wayland_surface_khr(
8993
0
        instance: vk::Instance,
8994
0
        p_create_info: *const vk::WaylandSurfaceCreateInfoKHR,
8995
0
        p_allocator: *const vk::AllocationCallbacks,
8996
0
        p_surface: *mut vk::SurfaceKHR,
8997
0
    ) -> vk::Result {
8998
0
        let global = Self::instance();
8999
0
        // vkCreateWaylandSurfaceKHR
9000
0
        let instance_info = global.get_instance_info(instance).unwrap();
9001
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9002
0
        let layer_result = instance_info
9003
0
            .customized_info
9004
0
            .borrow()
9005
0
            .hooks()
9006
0
            .create_wayland_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9007
0
                p_allocator.as_ref()
9008
0
            });
9009
0
        match layer_result {
9010
0
            LayerResult::Handled(res) => match res {
9011
0
                Ok(res) => {
9012
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9013
0
                    vk::Result::SUCCESS
9014
                }
9015
0
                Err(e) => e,
9016
            },
9017
            LayerResult::Unhandled => unsafe {
9018
0
                (dispatch_table.create_wayland_surface_khr)(
9019
0
                    instance,
9020
0
                    p_create_info,
9021
0
                    p_allocator,
9022
0
                    p_surface,
9023
0
                )
9024
            },
9025
        }
9026
0
    }
9027
0
    extern "system" fn get_physical_device_wayland_presentation_support_khr(
9028
0
        physical_device: vk::PhysicalDevice,
9029
0
        queue_family_index: u32,
9030
0
        display: *mut vk::wl_display,
9031
0
    ) -> vk::Bool32 {
9032
0
        let global = Self::instance();
9033
0
        // vkGetPhysicalDeviceWaylandPresentationSupportKHR
9034
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9035
0
        let dispatch_table = &instance_info.dispatch_table.khr_wayland_surface;
9036
0
        let layer_result = instance_info
9037
0
            .customized_info
9038
0
            .borrow()
9039
0
            .hooks()
9040
0
            .get_physical_device_wayland_presentation_support_khr(
9041
0
                physical_device,
9042
0
                queue_family_index,
9043
0
                display,
9044
0
            );
9045
0
        match layer_result {
9046
0
            LayerResult::Handled(res) => {
9047
0
                if res {
9048
0
                    vk::TRUE
9049
                } else {
9050
0
                    vk::FALSE
9051
                }
9052
            }
9053
            LayerResult::Unhandled => unsafe {
9054
0
                (dispatch_table.get_physical_device_wayland_presentation_support_khr)(
9055
0
                    physical_device,
9056
0
                    queue_family_index,
9057
0
                    display,
9058
0
                )
9059
            },
9060
        }
9061
0
    }
9062
0
    extern "system" fn create_android_surface_khr(
9063
0
        instance: vk::Instance,
9064
0
        p_create_info: *const vk::AndroidSurfaceCreateInfoKHR,
9065
0
        p_allocator: *const vk::AllocationCallbacks,
9066
0
        p_surface: *mut vk::SurfaceKHR,
9067
0
    ) -> vk::Result {
9068
0
        let global = Self::instance();
9069
0
        // vkCreateAndroidSurfaceKHR
9070
0
        let instance_info = global.get_instance_info(instance).unwrap();
9071
0
        let dispatch_table = &instance_info.dispatch_table.khr_android_surface;
9072
0
        let layer_result = instance_info
9073
0
            .customized_info
9074
0
            .borrow()
9075
0
            .hooks()
9076
0
            .create_android_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9077
0
                p_allocator.as_ref()
9078
0
            });
9079
0
        match layer_result {
9080
0
            LayerResult::Handled(res) => match res {
9081
0
                Ok(res) => {
9082
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9083
0
                    vk::Result::SUCCESS
9084
                }
9085
0
                Err(e) => e,
9086
            },
9087
            LayerResult::Unhandled => unsafe {
9088
0
                (dispatch_table.create_android_surface_khr)(
9089
0
                    instance,
9090
0
                    p_create_info,
9091
0
                    p_allocator,
9092
0
                    p_surface,
9093
0
                )
9094
            },
9095
        }
9096
0
    }
9097
0
    extern "system" fn create_win32_surface_khr(
9098
0
        instance: vk::Instance,
9099
0
        p_create_info: *const vk::Win32SurfaceCreateInfoKHR,
9100
0
        p_allocator: *const vk::AllocationCallbacks,
9101
0
        p_surface: *mut vk::SurfaceKHR,
9102
0
    ) -> vk::Result {
9103
0
        let global = Self::instance();
9104
0
        // vkCreateWin32SurfaceKHR
9105
0
        let instance_info = global.get_instance_info(instance).unwrap();
9106
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9107
0
        let layer_result = instance_info
9108
0
            .customized_info
9109
0
            .borrow()
9110
0
            .hooks()
9111
0
            .create_win32_surface_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9112
0
                p_allocator.as_ref()
9113
0
            });
9114
0
        match layer_result {
9115
0
            LayerResult::Handled(res) => match res {
9116
0
                Ok(res) => {
9117
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9118
0
                    vk::Result::SUCCESS
9119
                }
9120
0
                Err(e) => e,
9121
            },
9122
            LayerResult::Unhandled => unsafe {
9123
0
                (dispatch_table.create_win32_surface_khr)(
9124
0
                    instance,
9125
0
                    p_create_info,
9126
0
                    p_allocator,
9127
0
                    p_surface,
9128
0
                )
9129
            },
9130
        }
9131
0
    }
9132
0
    extern "system" fn get_physical_device_win32_presentation_support_khr(
9133
0
        physical_device: vk::PhysicalDevice,
9134
0
        queue_family_index: u32,
9135
0
    ) -> vk::Bool32 {
9136
0
        let global = Self::instance();
9137
0
        // vkGetPhysicalDeviceWin32PresentationSupportKHR
9138
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9139
0
        let dispatch_table = &instance_info.dispatch_table.khr_win32_surface;
9140
0
        let layer_result = instance_info
9141
0
            .customized_info
9142
0
            .borrow()
9143
0
            .hooks()
9144
0
            .get_physical_device_win32_presentation_support_khr(
9145
0
                physical_device,
9146
0
                queue_family_index,
9147
0
            );
9148
0
        match layer_result {
9149
0
            LayerResult::Handled(res) => {
9150
0
                if res {
9151
0
                    vk::TRUE
9152
                } else {
9153
0
                    vk::FALSE
9154
                }
9155
            }
9156
            LayerResult::Unhandled => unsafe {
9157
0
                (dispatch_table.get_physical_device_win32_presentation_support_khr)(
9158
0
                    physical_device,
9159
0
                    queue_family_index,
9160
0
                )
9161
            },
9162
        }
9163
0
    }
9164
0
    extern "system" fn get_physical_device_video_capabilities_khr(
9165
0
        physical_device: vk::PhysicalDevice,
9166
0
        p_video_profile: *const vk::VideoProfileInfoKHR,
9167
0
        p_capabilities: *mut vk::VideoCapabilitiesKHR,
9168
0
    ) -> vk::Result {
9169
0
        let global = Self::instance();
9170
0
        // vkGetPhysicalDeviceVideoCapabilitiesKHR
9171
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9172
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9173
0
        let layer_result = instance_info
9174
0
            .customized_info
9175
0
            .borrow()
9176
0
            .hooks()
9177
0
            .get_physical_device_video_capabilities_khr(
9178
0
                physical_device,
9179
0
                unsafe { p_video_profile.as_ref() }.unwrap(),
9180
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
9181
0
            );
9182
0
        match layer_result {
9183
0
            LayerResult::Handled(res) => match res {
9184
0
                Ok(()) => vk::Result::SUCCESS,
9185
0
                Err(e) => e,
9186
            },
9187
            LayerResult::Unhandled => unsafe {
9188
0
                (dispatch_table.get_physical_device_video_capabilities_khr)(
9189
0
                    physical_device,
9190
0
                    p_video_profile,
9191
0
                    p_capabilities,
9192
0
                )
9193
            },
9194
        }
9195
0
    }
9196
0
    extern "system" fn get_physical_device_video_format_properties_khr(
9197
0
        physical_device: vk::PhysicalDevice,
9198
0
        p_video_format_info: *const vk::PhysicalDeviceVideoFormatInfoKHR,
9199
0
        p_video_format_property_count: *mut u32,
9200
0
        p_video_format_properties: *mut vk::VideoFormatPropertiesKHR,
9201
0
    ) -> vk::Result {
9202
0
        let global = Self::instance();
9203
0
        // vkGetPhysicalDeviceVideoFormatPropertiesKHR
9204
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9205
0
        let dispatch_table = &instance_info.dispatch_table.khr_video_queue;
9206
0
        let layer_result = instance_info
9207
0
            .customized_info
9208
0
            .borrow()
9209
0
            .hooks()
9210
0
            .get_physical_device_video_format_properties_khr(
9211
0
                physical_device,
9212
0
                unsafe { p_video_format_info.as_ref() }.unwrap(),
9213
0
                unsafe { ptr_as_uninit_mut(p_video_format_property_count) }.unwrap(),
9214
0
                unsafe {
9215
0
                    maybe_uninit_slice_from_raw_parts_mut(
9216
0
                        p_video_format_properties,
9217
0
                        p_video_format_property_count,
9218
0
                    )
9219
0
                },
9220
0
            );
9221
0
        match layer_result {
9222
0
            LayerResult::Handled(res) => match res {
9223
0
                Ok(()) => vk::Result::SUCCESS,
9224
0
                Err(e) => e,
9225
            },
9226
            LayerResult::Unhandled => unsafe {
9227
0
                (dispatch_table.get_physical_device_video_format_properties_khr)(
9228
0
                    physical_device,
9229
0
                    p_video_format_info,
9230
0
                    p_video_format_property_count,
9231
0
                    p_video_format_properties,
9232
0
                )
9233
            },
9234
        }
9235
0
    }
9236
0
    extern "system" fn enumerate_physical_device_queue_family_performance_query_counters_khr(
9237
0
        physical_device: vk::PhysicalDevice,
9238
0
        queue_family_index: u32,
9239
0
        p_counter_count: *mut u32,
9240
0
        p_counters: *mut vk::PerformanceCounterKHR,
9241
0
        p_counter_descriptions: *mut vk::PerformanceCounterDescriptionKHR,
9242
0
    ) -> vk::Result {
9243
0
        let global = Self::instance();
9244
0
        // vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
9245
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9246
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9247
0
        let layer_result = instance_info
9248
0
            .customized_info
9249
0
            .borrow()
9250
0
            .hooks()
9251
0
            .enumerate_physical_device_queue_family_performance_query_counters_khr(
9252
0
                physical_device,
9253
0
                queue_family_index,
9254
0
                unsafe { ptr_as_uninit_mut(p_counter_count) }.unwrap(),
9255
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_counters, p_counter_count) },
9256
0
                unsafe {
9257
0
                    maybe_uninit_slice_from_raw_parts_mut(p_counter_descriptions, p_counter_count)
9258
0
                },
9259
0
            );
9260
0
        match layer_result {
9261
0
            LayerResult::Handled(res) => match res {
9262
0
                Ok(()) => vk::Result::SUCCESS,
9263
0
                Err(e) => e,
9264
            },
9265
            LayerResult::Unhandled => unsafe {
9266
0
                (dispatch_table
9267
0
                    .enumerate_physical_device_queue_family_performance_query_counters_khr)(
9268
0
                    physical_device,
9269
0
                    queue_family_index,
9270
0
                    p_counter_count,
9271
0
                    p_counters,
9272
0
                    p_counter_descriptions,
9273
0
                )
9274
            },
9275
        }
9276
0
    }
9277
0
    extern "system" fn get_physical_device_queue_family_performance_query_passes_khr(
9278
0
        physical_device: vk::PhysicalDevice,
9279
0
        p_performance_query_create_info: *const vk::QueryPoolPerformanceCreateInfoKHR,
9280
0
        p_num_passes: *mut u32,
9281
0
    ) {
9282
0
        let global = Self::instance();
9283
0
        // vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR
9284
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9285
0
        let dispatch_table = &instance_info.dispatch_table.khr_performance_query;
9286
0
        let layer_result = instance_info
9287
0
            .customized_info
9288
0
            .borrow()
9289
0
            .hooks()
9290
0
            .get_physical_device_queue_family_performance_query_passes_khr(
9291
0
                physical_device,
9292
0
                unsafe { p_performance_query_create_info.as_ref() }.unwrap(),
9293
0
            );
9294
0
        match layer_result {
9295
0
            LayerResult::Handled(res) => {
9296
0
                *unsafe { p_num_passes.as_mut() }.unwrap() = res;
9297
0
            }
9298
            LayerResult::Unhandled => unsafe {
9299
0
                (dispatch_table.get_physical_device_queue_family_performance_query_passes_khr)(
9300
0
                    physical_device,
9301
0
                    p_performance_query_create_info,
9302
0
                    p_num_passes,
9303
0
                )
9304
            },
9305
        }
9306
0
    }
9307
0
    extern "system" fn get_physical_device_surface_capabilities2_khr(
9308
0
        physical_device: vk::PhysicalDevice,
9309
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9310
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2KHR,
9311
0
    ) -> vk::Result {
9312
0
        let global = Self::instance();
9313
0
        // vkGetPhysicalDeviceSurfaceCapabilities2KHR
9314
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9315
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9316
0
        let layer_result = instance_info
9317
0
            .customized_info
9318
0
            .borrow()
9319
0
            .hooks()
9320
0
            .get_physical_device_surface_capabilities2_khr(
9321
0
                physical_device,
9322
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9323
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
9324
0
            );
9325
0
        match layer_result {
9326
0
            LayerResult::Handled(res) => match res {
9327
0
                Ok(()) => vk::Result::SUCCESS,
9328
0
                Err(e) => e,
9329
            },
9330
            LayerResult::Unhandled => unsafe {
9331
0
                (dispatch_table.get_physical_device_surface_capabilities2_khr)(
9332
0
                    physical_device,
9333
0
                    p_surface_info,
9334
0
                    p_surface_capabilities,
9335
0
                )
9336
            },
9337
        }
9338
0
    }
9339
0
    extern "system" fn get_physical_device_surface_formats2_khr(
9340
0
        physical_device: vk::PhysicalDevice,
9341
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
9342
0
        p_surface_format_count: *mut u32,
9343
0
        p_surface_formats: *mut vk::SurfaceFormat2KHR,
9344
0
    ) -> vk::Result {
9345
0
        let global = Self::instance();
9346
0
        // vkGetPhysicalDeviceSurfaceFormats2KHR
9347
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9348
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_surface_capabilities2;
9349
0
        let layer_result = instance_info
9350
0
            .customized_info
9351
0
            .borrow()
9352
0
            .hooks()
9353
0
            .get_physical_device_surface_formats2_khr(
9354
0
                physical_device,
9355
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
9356
0
                unsafe { ptr_as_uninit_mut(p_surface_format_count) }.unwrap(),
9357
0
                unsafe {
9358
0
                    maybe_uninit_slice_from_raw_parts_mut(p_surface_formats, p_surface_format_count)
9359
0
                },
9360
0
            );
9361
0
        match layer_result {
9362
0
            LayerResult::Handled(res) => match res {
9363
0
                Ok(()) => vk::Result::SUCCESS,
9364
0
                Err(e) => e,
9365
            },
9366
            LayerResult::Unhandled => unsafe {
9367
0
                (dispatch_table.get_physical_device_surface_formats2_khr)(
9368
0
                    physical_device,
9369
0
                    p_surface_info,
9370
0
                    p_surface_format_count,
9371
0
                    p_surface_formats,
9372
0
                )
9373
            },
9374
        }
9375
0
    }
9376
0
    extern "system" fn get_physical_device_display_properties2_khr(
9377
0
        physical_device: vk::PhysicalDevice,
9378
0
        p_property_count: *mut u32,
9379
0
        p_properties: *mut vk::DisplayProperties2KHR,
9380
0
    ) -> vk::Result {
9381
0
        let global = Self::instance();
9382
0
        // vkGetPhysicalDeviceDisplayProperties2KHR
9383
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9384
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9385
0
        let layer_result = instance_info
9386
0
            .customized_info
9387
0
            .borrow()
9388
0
            .hooks()
9389
0
            .get_physical_device_display_properties2_khr(
9390
0
                physical_device,
9391
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9392
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9393
0
            );
9394
0
        match layer_result {
9395
0
            LayerResult::Handled(res) => match res {
9396
0
                Ok(()) => vk::Result::SUCCESS,
9397
0
                Err(e) => e,
9398
            },
9399
            LayerResult::Unhandled => unsafe {
9400
0
                (dispatch_table.get_physical_device_display_properties2_khr)(
9401
0
                    physical_device,
9402
0
                    p_property_count,
9403
0
                    p_properties,
9404
0
                )
9405
            },
9406
        }
9407
0
    }
9408
0
    extern "system" fn get_physical_device_display_plane_properties2_khr(
9409
0
        physical_device: vk::PhysicalDevice,
9410
0
        p_property_count: *mut u32,
9411
0
        p_properties: *mut vk::DisplayPlaneProperties2KHR,
9412
0
    ) -> vk::Result {
9413
0
        let global = Self::instance();
9414
0
        // vkGetPhysicalDeviceDisplayPlaneProperties2KHR
9415
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9416
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9417
0
        let layer_result = instance_info
9418
0
            .customized_info
9419
0
            .borrow()
9420
0
            .hooks()
9421
0
            .get_physical_device_display_plane_properties2_khr(
9422
0
                physical_device,
9423
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9424
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9425
0
            );
9426
0
        match layer_result {
9427
0
            LayerResult::Handled(res) => match res {
9428
0
                Ok(()) => vk::Result::SUCCESS,
9429
0
                Err(e) => e,
9430
            },
9431
            LayerResult::Unhandled => unsafe {
9432
0
                (dispatch_table.get_physical_device_display_plane_properties2_khr)(
9433
0
                    physical_device,
9434
0
                    p_property_count,
9435
0
                    p_properties,
9436
0
                )
9437
            },
9438
        }
9439
0
    }
9440
0
    extern "system" fn get_display_mode_properties2_khr(
9441
0
        physical_device: vk::PhysicalDevice,
9442
0
        display: vk::DisplayKHR,
9443
0
        p_property_count: *mut u32,
9444
0
        p_properties: *mut vk::DisplayModeProperties2KHR,
9445
0
    ) -> vk::Result {
9446
0
        let global = Self::instance();
9447
0
        // vkGetDisplayModeProperties2KHR
9448
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9449
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9450
0
        let layer_result = instance_info
9451
0
            .customized_info
9452
0
            .borrow()
9453
0
            .hooks()
9454
0
            .get_display_mode_properties2_khr(
9455
0
                physical_device,
9456
0
                display,
9457
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
9458
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
9459
0
            );
9460
0
        match layer_result {
9461
0
            LayerResult::Handled(res) => match res {
9462
0
                Ok(()) => vk::Result::SUCCESS,
9463
0
                Err(e) => e,
9464
            },
9465
            LayerResult::Unhandled => unsafe {
9466
0
                (dispatch_table.get_display_mode_properties2_khr)(
9467
0
                    physical_device,
9468
0
                    display,
9469
0
                    p_property_count,
9470
0
                    p_properties,
9471
0
                )
9472
            },
9473
        }
9474
0
    }
9475
0
    extern "system" fn get_display_plane_capabilities2_khr(
9476
0
        physical_device: vk::PhysicalDevice,
9477
0
        p_display_plane_info: *const vk::DisplayPlaneInfo2KHR,
9478
0
        p_capabilities: *mut vk::DisplayPlaneCapabilities2KHR,
9479
0
    ) -> vk::Result {
9480
0
        let global = Self::instance();
9481
0
        // vkGetDisplayPlaneCapabilities2KHR
9482
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9483
0
        let dispatch_table = &instance_info.dispatch_table.khr_get_display_properties2;
9484
0
        let layer_result = instance_info
9485
0
            .customized_info
9486
0
            .borrow()
9487
0
            .hooks()
9488
0
            .get_display_plane_capabilities2_khr(
9489
0
                physical_device,
9490
0
                unsafe { p_display_plane_info.as_ref() }.unwrap(),
9491
0
                unsafe { ptr_as_uninit_mut(p_capabilities) }.unwrap(),
9492
0
            );
9493
0
        match layer_result {
9494
0
            LayerResult::Handled(res) => match res {
9495
0
                Ok(()) => vk::Result::SUCCESS,
9496
0
                Err(e) => e,
9497
            },
9498
            LayerResult::Unhandled => unsafe {
9499
0
                (dispatch_table.get_display_plane_capabilities2_khr)(
9500
0
                    physical_device,
9501
0
                    p_display_plane_info,
9502
0
                    p_capabilities,
9503
0
                )
9504
            },
9505
        }
9506
0
    }
9507
0
    extern "system" fn get_physical_device_fragment_shading_rates_khr(
9508
0
        physical_device: vk::PhysicalDevice,
9509
0
        p_fragment_shading_rate_count: *mut u32,
9510
0
        p_fragment_shading_rates: *mut vk::PhysicalDeviceFragmentShadingRateKHR,
9511
0
    ) -> vk::Result {
9512
0
        let global = Self::instance();
9513
0
        // vkGetPhysicalDeviceFragmentShadingRatesKHR
9514
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9515
0
        let dispatch_table = &instance_info.dispatch_table.khr_fragment_shading_rate;
9516
0
        let layer_result = instance_info
9517
0
            .customized_info
9518
0
            .borrow()
9519
0
            .hooks()
9520
0
            .get_physical_device_fragment_shading_rates_khr(
9521
0
                physical_device,
9522
0
                unsafe { ptr_as_uninit_mut(p_fragment_shading_rate_count) }.unwrap(),
9523
0
                unsafe {
9524
0
                    maybe_uninit_slice_from_raw_parts_mut(
9525
0
                        p_fragment_shading_rates,
9526
0
                        p_fragment_shading_rate_count,
9527
0
                    )
9528
0
                },
9529
0
            );
9530
0
        match layer_result {
9531
0
            LayerResult::Handled(res) => match res {
9532
0
                Ok(()) => vk::Result::SUCCESS,
9533
0
                Err(e) => e,
9534
            },
9535
            LayerResult::Unhandled => unsafe {
9536
0
                (dispatch_table.get_physical_device_fragment_shading_rates_khr)(
9537
0
                    physical_device,
9538
0
                    p_fragment_shading_rate_count,
9539
0
                    p_fragment_shading_rates,
9540
0
                )
9541
            },
9542
        }
9543
0
    }
9544
0
    extern "system" fn create_debug_report_callback_ext(
9545
0
        instance: vk::Instance,
9546
0
        p_create_info: *const vk::DebugReportCallbackCreateInfoEXT,
9547
0
        p_allocator: *const vk::AllocationCallbacks,
9548
0
        p_callback: *mut vk::DebugReportCallbackEXT,
9549
0
    ) -> vk::Result {
9550
0
        let global = Self::instance();
9551
0
        // vkCreateDebugReportCallbackEXT
9552
0
        let instance_info = global.get_instance_info(instance).unwrap();
9553
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9554
0
        let layer_result = instance_info
9555
0
            .customized_info
9556
0
            .borrow()
9557
0
            .hooks()
9558
0
            .create_debug_report_callback_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9559
0
                p_allocator.as_ref()
9560
0
            });
9561
0
        match layer_result {
9562
0
            LayerResult::Handled(res) => match res {
9563
0
                Ok(res) => {
9564
0
                    *unsafe { p_callback.as_mut() }.unwrap() = res;
9565
0
                    vk::Result::SUCCESS
9566
                }
9567
0
                Err(e) => e,
9568
            },
9569
            LayerResult::Unhandled => unsafe {
9570
0
                (dispatch_table.create_debug_report_callback_ext)(
9571
0
                    instance,
9572
0
                    p_create_info,
9573
0
                    p_allocator,
9574
0
                    p_callback,
9575
0
                )
9576
            },
9577
        }
9578
0
    }
9579
0
    extern "system" fn destroy_debug_report_callback_ext(
9580
0
        instance: vk::Instance,
9581
0
        callback: vk::DebugReportCallbackEXT,
9582
0
        p_allocator: *const vk::AllocationCallbacks,
9583
0
    ) {
9584
0
        let global = Self::instance();
9585
0
        // vkDestroyDebugReportCallbackEXT
9586
0
        let instance_info = global.get_instance_info(instance).unwrap();
9587
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9588
0
        let layer_result = instance_info
9589
0
            .customized_info
9590
0
            .borrow()
9591
0
            .hooks()
9592
0
            .destroy_debug_report_callback_ext(callback, unsafe { p_allocator.as_ref() });
9593
0
        match layer_result {
9594
0
            LayerResult::Handled(res) => res,
9595
            LayerResult::Unhandled => unsafe {
9596
0
                (dispatch_table.destroy_debug_report_callback_ext)(instance, callback, p_allocator)
9597
            },
9598
        }
9599
0
    }
9600
0
    extern "system" fn debug_report_message_ext(
9601
0
        instance: vk::Instance,
9602
0
        flags: vk::DebugReportFlagsEXT,
9603
0
        object_type: vk::DebugReportObjectTypeEXT,
9604
0
        object: u64,
9605
0
        location: usize,
9606
0
        message_code: i32,
9607
0
        p_layer_prefix: *const c_char,
9608
0
        p_message: *const c_char,
9609
0
    ) {
9610
0
        let global = Self::instance();
9611
0
        // vkDebugReportMessageEXT
9612
0
        let instance_info = global.get_instance_info(instance).unwrap();
9613
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_report;
9614
0
        let layer_result = instance_info
9615
0
            .customized_info
9616
0
            .borrow()
9617
0
            .hooks()
9618
0
            .debug_report_message_ext(
9619
0
                flags,
9620
0
                object_type,
9621
0
                object,
9622
0
                location,
9623
0
                message_code,
9624
0
                unsafe { CStr::from_ptr(p_layer_prefix) }.to_str().unwrap(),
9625
0
                unsafe { CStr::from_ptr(p_message) }.to_str().unwrap(),
9626
0
            );
9627
0
        match layer_result {
9628
0
            LayerResult::Handled(res) => res,
9629
            LayerResult::Unhandled => unsafe {
9630
0
                (dispatch_table.debug_report_message_ext)(
9631
0
                    instance,
9632
0
                    flags,
9633
0
                    object_type,
9634
0
                    object,
9635
0
                    location,
9636
0
                    message_code,
9637
0
                    p_layer_prefix,
9638
0
                    p_message,
9639
0
                )
9640
            },
9641
        }
9642
0
    }
9643
0
    extern "system" fn create_stream_descriptor_surface_ggp(
9644
0
        instance: vk::Instance,
9645
0
        p_create_info: *const vk::StreamDescriptorSurfaceCreateInfoGGP,
9646
0
        p_allocator: *const vk::AllocationCallbacks,
9647
0
        p_surface: *mut vk::SurfaceKHR,
9648
0
    ) -> vk::Result {
9649
0
        let global = Self::instance();
9650
0
        // vkCreateStreamDescriptorSurfaceGGP
9651
0
        let instance_info = global.get_instance_info(instance).unwrap();
9652
0
        let dispatch_table = &instance_info.dispatch_table.ggp_stream_descriptor_surface;
9653
0
        let layer_result = instance_info
9654
0
            .customized_info
9655
0
            .borrow()
9656
0
            .hooks()
9657
0
            .create_stream_descriptor_surface_ggp(
9658
0
                unsafe { p_create_info.as_ref() }.unwrap(),
9659
0
                unsafe { p_allocator.as_ref() },
9660
0
            );
9661
0
        match layer_result {
9662
0
            LayerResult::Handled(res) => match res {
9663
0
                Ok(res) => {
9664
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9665
0
                    vk::Result::SUCCESS
9666
                }
9667
0
                Err(e) => e,
9668
            },
9669
            LayerResult::Unhandled => unsafe {
9670
0
                (dispatch_table.create_stream_descriptor_surface_ggp)(
9671
0
                    instance,
9672
0
                    p_create_info,
9673
0
                    p_allocator,
9674
0
                    p_surface,
9675
0
                )
9676
            },
9677
        }
9678
0
    }
9679
0
    extern "system" fn get_physical_device_external_image_format_properties_nv(
9680
0
        physical_device: vk::PhysicalDevice,
9681
0
        format: vk::Format,
9682
0
        _type: vk::ImageType,
9683
0
        tiling: vk::ImageTiling,
9684
0
        usage: vk::ImageUsageFlags,
9685
0
        flags: vk::ImageCreateFlags,
9686
0
        external_handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
9687
0
        p_external_image_format_properties: *mut vk::ExternalImageFormatPropertiesNV,
9688
0
    ) -> vk::Result {
9689
0
        let global = Self::instance();
9690
0
        // vkGetPhysicalDeviceExternalImageFormatPropertiesNV
9691
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9692
0
        let dispatch_table = &instance_info.dispatch_table.nv_external_memory_capabilities;
9693
0
        let layer_result = instance_info
9694
0
            .customized_info
9695
0
            .borrow()
9696
0
            .hooks()
9697
0
            .get_physical_device_external_image_format_properties_nv(
9698
0
                physical_device,
9699
0
                format,
9700
0
                _type,
9701
0
                tiling,
9702
0
                usage,
9703
0
                flags,
9704
0
                external_handle_type,
9705
0
                unsafe { ptr_as_uninit_mut(p_external_image_format_properties) }.unwrap(),
9706
0
            );
9707
0
        match layer_result {
9708
0
            LayerResult::Handled(res) => match res {
9709
0
                Ok(()) => vk::Result::SUCCESS,
9710
0
                Err(e) => e,
9711
            },
9712
            LayerResult::Unhandled => unsafe {
9713
0
                (dispatch_table.get_physical_device_external_image_format_properties_nv)(
9714
0
                    physical_device,
9715
0
                    format,
9716
0
                    _type,
9717
0
                    tiling,
9718
0
                    usage,
9719
0
                    flags,
9720
0
                    external_handle_type,
9721
0
                    p_external_image_format_properties,
9722
0
                )
9723
            },
9724
        }
9725
0
    }
9726
0
    extern "system" fn create_vi_surface_nn(
9727
0
        instance: vk::Instance,
9728
0
        p_create_info: *const vk::ViSurfaceCreateInfoNN,
9729
0
        p_allocator: *const vk::AllocationCallbacks,
9730
0
        p_surface: *mut vk::SurfaceKHR,
9731
0
    ) -> vk::Result {
9732
0
        let global = Self::instance();
9733
0
        // vkCreateViSurfaceNN
9734
0
        let instance_info = global.get_instance_info(instance).unwrap();
9735
0
        let dispatch_table = &instance_info.dispatch_table.nn_vi_surface;
9736
0
        let layer_result = instance_info
9737
0
            .customized_info
9738
0
            .borrow()
9739
0
            .hooks()
9740
0
            .create_vi_surface_nn(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9741
0
                p_allocator.as_ref()
9742
0
            });
9743
0
        match layer_result {
9744
0
            LayerResult::Handled(res) => match res {
9745
0
                Ok(res) => {
9746
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9747
0
                    vk::Result::SUCCESS
9748
                }
9749
0
                Err(e) => e,
9750
            },
9751
            LayerResult::Unhandled => unsafe {
9752
0
                (dispatch_table.create_vi_surface_nn)(
9753
0
                    instance,
9754
0
                    p_create_info,
9755
0
                    p_allocator,
9756
0
                    p_surface,
9757
0
                )
9758
            },
9759
        }
9760
0
    }
9761
0
    extern "system" fn release_display_ext(
9762
0
        physical_device: vk::PhysicalDevice,
9763
0
        display: vk::DisplayKHR,
9764
0
    ) -> vk::Result {
9765
0
        let global = Self::instance();
9766
0
        // vkReleaseDisplayEXT
9767
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9768
0
        let dispatch_table = &instance_info.dispatch_table.ext_direct_mode_display;
9769
0
        let layer_result = instance_info
9770
0
            .customized_info
9771
0
            .borrow()
9772
0
            .hooks()
9773
0
            .release_display_ext(physical_device, display);
9774
0
        match layer_result {
9775
0
            LayerResult::Handled(res) => match res {
9776
0
                Ok(()) => vk::Result::SUCCESS,
9777
0
                Err(e) => e,
9778
            },
9779
            LayerResult::Unhandled => unsafe {
9780
0
                (dispatch_table.release_display_ext)(physical_device, display)
9781
            },
9782
        }
9783
0
    }
9784
0
    extern "system" fn acquire_xlib_display_ext(
9785
0
        physical_device: vk::PhysicalDevice,
9786
0
        dpy: *mut vk::Display,
9787
0
        display: vk::DisplayKHR,
9788
0
    ) -> vk::Result {
9789
0
        let global = Self::instance();
9790
0
        // vkAcquireXlibDisplayEXT
9791
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9792
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9793
0
        let layer_result = instance_info
9794
0
            .customized_info
9795
0
            .borrow()
9796
0
            .hooks()
9797
0
            .acquire_xlib_display_ext(
9798
0
                physical_device,
9799
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
9800
0
                display,
9801
0
            );
9802
0
        match layer_result {
9803
0
            LayerResult::Handled(res) => match res {
9804
0
                Ok(()) => vk::Result::SUCCESS,
9805
0
                Err(e) => e,
9806
            },
9807
            LayerResult::Unhandled => unsafe {
9808
0
                (dispatch_table.acquire_xlib_display_ext)(physical_device, dpy, display)
9809
            },
9810
        }
9811
0
    }
9812
0
    extern "system" fn get_rand_r_output_display_ext(
9813
0
        physical_device: vk::PhysicalDevice,
9814
0
        dpy: *mut vk::Display,
9815
0
        rr_output: vk::RROutput,
9816
0
        p_display: *mut vk::DisplayKHR,
9817
0
    ) -> vk::Result {
9818
0
        let global = Self::instance();
9819
0
        // vkGetRandROutputDisplayEXT
9820
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9821
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_xlib_display;
9822
0
        let layer_result = instance_info
9823
0
            .customized_info
9824
0
            .borrow()
9825
0
            .hooks()
9826
0
            .get_rand_r_output_display_ext(
9827
0
                physical_device,
9828
0
                unsafe { ptr_as_uninit_mut(dpy) }.unwrap(),
9829
0
                rr_output,
9830
0
            );
9831
0
        match layer_result {
9832
0
            LayerResult::Handled(res) => match res {
9833
0
                Ok(res) => {
9834
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
9835
0
                    vk::Result::SUCCESS
9836
                }
9837
0
                Err(e) => e,
9838
            },
9839
            LayerResult::Unhandled => unsafe {
9840
0
                (dispatch_table.get_rand_r_output_display_ext)(
9841
0
                    physical_device,
9842
0
                    dpy,
9843
0
                    rr_output,
9844
0
                    p_display,
9845
0
                )
9846
            },
9847
        }
9848
0
    }
9849
0
    extern "system" fn get_physical_device_surface_capabilities2_ext(
9850
0
        physical_device: vk::PhysicalDevice,
9851
0
        surface: vk::SurfaceKHR,
9852
0
        p_surface_capabilities: *mut vk::SurfaceCapabilities2EXT,
9853
0
    ) -> vk::Result {
9854
0
        let global = Self::instance();
9855
0
        // vkGetPhysicalDeviceSurfaceCapabilities2EXT
9856
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
9857
0
        let dispatch_table = &instance_info.dispatch_table.ext_display_surface_counter;
9858
0
        let layer_result = instance_info
9859
0
            .customized_info
9860
0
            .borrow()
9861
0
            .hooks()
9862
0
            .get_physical_device_surface_capabilities2_ext(
9863
0
                physical_device,
9864
0
                surface,
9865
0
                unsafe { ptr_as_uninit_mut(p_surface_capabilities) }.unwrap(),
9866
0
            );
9867
0
        match layer_result {
9868
0
            LayerResult::Handled(res) => match res {
9869
0
                Ok(()) => vk::Result::SUCCESS,
9870
0
                Err(e) => e,
9871
            },
9872
            LayerResult::Unhandled => unsafe {
9873
0
                (dispatch_table.get_physical_device_surface_capabilities2_ext)(
9874
0
                    physical_device,
9875
0
                    surface,
9876
0
                    p_surface_capabilities,
9877
0
                )
9878
            },
9879
        }
9880
0
    }
9881
0
    extern "system" fn create_ios_surface_mvk(
9882
0
        instance: vk::Instance,
9883
0
        p_create_info: *const vk::IOSSurfaceCreateInfoMVK,
9884
0
        p_allocator: *const vk::AllocationCallbacks,
9885
0
        p_surface: *mut vk::SurfaceKHR,
9886
0
    ) -> vk::Result {
9887
0
        let global = Self::instance();
9888
0
        // vkCreateIOSSurfaceMVK
9889
0
        let instance_info = global.get_instance_info(instance).unwrap();
9890
0
        let dispatch_table = &instance_info.dispatch_table.mvk_ios_surface;
9891
0
        let layer_result = instance_info
9892
0
            .customized_info
9893
0
            .borrow()
9894
0
            .hooks()
9895
0
            .create_ios_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9896
0
                p_allocator.as_ref()
9897
0
            });
9898
0
        match layer_result {
9899
0
            LayerResult::Handled(res) => match res {
9900
0
                Ok(res) => {
9901
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9902
0
                    vk::Result::SUCCESS
9903
                }
9904
0
                Err(e) => e,
9905
            },
9906
            LayerResult::Unhandled => unsafe {
9907
0
                (dispatch_table.create_ios_surface_mvk)(
9908
0
                    instance,
9909
0
                    p_create_info,
9910
0
                    p_allocator,
9911
0
                    p_surface,
9912
0
                )
9913
            },
9914
        }
9915
0
    }
9916
0
    extern "system" fn create_mac_os_surface_mvk(
9917
0
        instance: vk::Instance,
9918
0
        p_create_info: *const vk::MacOSSurfaceCreateInfoMVK,
9919
0
        p_allocator: *const vk::AllocationCallbacks,
9920
0
        p_surface: *mut vk::SurfaceKHR,
9921
0
    ) -> vk::Result {
9922
0
        let global = Self::instance();
9923
0
        // vkCreateMacOSSurfaceMVK
9924
0
        let instance_info = global.get_instance_info(instance).unwrap();
9925
0
        let dispatch_table = &instance_info.dispatch_table.mvk_macos_surface;
9926
0
        let layer_result = instance_info
9927
0
            .customized_info
9928
0
            .borrow()
9929
0
            .hooks()
9930
0
            .create_mac_os_surface_mvk(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9931
0
                p_allocator.as_ref()
9932
0
            });
9933
0
        match layer_result {
9934
0
            LayerResult::Handled(res) => match res {
9935
0
                Ok(res) => {
9936
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
9937
0
                    vk::Result::SUCCESS
9938
                }
9939
0
                Err(e) => e,
9940
            },
9941
            LayerResult::Unhandled => unsafe {
9942
0
                (dispatch_table.create_mac_os_surface_mvk)(
9943
0
                    instance,
9944
0
                    p_create_info,
9945
0
                    p_allocator,
9946
0
                    p_surface,
9947
0
                )
9948
            },
9949
        }
9950
0
    }
9951
0
    extern "system" fn create_debug_utils_messenger_ext(
9952
0
        instance: vk::Instance,
9953
0
        p_create_info: *const vk::DebugUtilsMessengerCreateInfoEXT,
9954
0
        p_allocator: *const vk::AllocationCallbacks,
9955
0
        p_messenger: *mut vk::DebugUtilsMessengerEXT,
9956
0
    ) -> vk::Result {
9957
0
        let global = Self::instance();
9958
0
        // vkCreateDebugUtilsMessengerEXT
9959
0
        let instance_info = global.get_instance_info(instance).unwrap();
9960
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
9961
0
        let layer_result = instance_info
9962
0
            .customized_info
9963
0
            .borrow()
9964
0
            .hooks()
9965
0
            .create_debug_utils_messenger_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
9966
0
                p_allocator.as_ref()
9967
0
            });
9968
0
        match layer_result {
9969
0
            LayerResult::Handled(res) => match res {
9970
0
                Ok(res) => {
9971
0
                    *unsafe { p_messenger.as_mut() }.unwrap() = res;
9972
0
                    vk::Result::SUCCESS
9973
                }
9974
0
                Err(e) => e,
9975
            },
9976
            LayerResult::Unhandled => unsafe {
9977
0
                (dispatch_table.create_debug_utils_messenger_ext)(
9978
0
                    instance,
9979
0
                    p_create_info,
9980
0
                    p_allocator,
9981
0
                    p_messenger,
9982
0
                )
9983
            },
9984
        }
9985
0
    }
9986
0
    extern "system" fn destroy_debug_utils_messenger_ext(
9987
0
        instance: vk::Instance,
9988
0
        messenger: vk::DebugUtilsMessengerEXT,
9989
0
        p_allocator: *const vk::AllocationCallbacks,
9990
0
    ) {
9991
0
        let global = Self::instance();
9992
0
        // vkDestroyDebugUtilsMessengerEXT
9993
0
        let instance_info = global.get_instance_info(instance).unwrap();
9994
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
9995
0
        let layer_result = instance_info
9996
0
            .customized_info
9997
0
            .borrow()
9998
0
            .hooks()
9999
0
            .destroy_debug_utils_messenger_ext(messenger, unsafe { p_allocator.as_ref() });
10000
0
        match layer_result {
10001
0
            LayerResult::Handled(res) => res,
10002
            LayerResult::Unhandled => unsafe {
10003
0
                (dispatch_table.destroy_debug_utils_messenger_ext)(instance, messenger, p_allocator)
10004
            },
10005
        }
10006
0
    }
10007
0
    extern "system" fn submit_debug_utils_message_ext(
10008
0
        instance: vk::Instance,
10009
0
        message_severity: vk::DebugUtilsMessageSeverityFlagsEXT,
10010
0
        message_types: vk::DebugUtilsMessageTypeFlagsEXT,
10011
0
        p_callback_data: *const vk::DebugUtilsMessengerCallbackDataEXT,
10012
0
    ) {
10013
0
        let global = Self::instance();
10014
0
        // vkSubmitDebugUtilsMessageEXT
10015
0
        let instance_info = global.get_instance_info(instance).unwrap();
10016
0
        let dispatch_table = &instance_info.dispatch_table.ext_debug_utils;
10017
0
        let layer_result = instance_info
10018
0
            .customized_info
10019
0
            .borrow()
10020
0
            .hooks()
10021
0
            .submit_debug_utils_message_ext(
10022
0
                message_severity,
10023
0
                message_types,
10024
0
                unsafe { p_callback_data.as_ref() }.unwrap(),
10025
0
            );
10026
0
        match layer_result {
10027
0
            LayerResult::Handled(res) => res,
10028
            LayerResult::Unhandled => unsafe {
10029
0
                (dispatch_table.submit_debug_utils_message_ext)(
10030
0
                    instance,
10031
0
                    message_severity,
10032
0
                    message_types,
10033
0
                    p_callback_data,
10034
0
                )
10035
            },
10036
        }
10037
0
    }
10038
0
    extern "system" fn get_physical_device_multisample_properties_ext(
10039
0
        physical_device: vk::PhysicalDevice,
10040
0
        samples: vk::SampleCountFlags,
10041
0
        p_multisample_properties: *mut vk::MultisamplePropertiesEXT,
10042
0
    ) {
10043
0
        let global = Self::instance();
10044
0
        // vkGetPhysicalDeviceMultisamplePropertiesEXT
10045
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10046
0
        let dispatch_table = &instance_info.dispatch_table.ext_sample_locations;
10047
0
        let layer_result = instance_info
10048
0
            .customized_info
10049
0
            .borrow()
10050
0
            .hooks()
10051
0
            .get_physical_device_multisample_properties_ext(
10052
0
                physical_device,
10053
0
                samples,
10054
0
                unsafe { ptr_as_uninit_mut(p_multisample_properties) }.unwrap(),
10055
0
            );
10056
0
        match layer_result {
10057
0
            LayerResult::Handled(res) => res,
10058
            LayerResult::Unhandled => unsafe {
10059
0
                (dispatch_table.get_physical_device_multisample_properties_ext)(
10060
0
                    physical_device,
10061
0
                    samples,
10062
0
                    p_multisample_properties,
10063
0
                )
10064
            },
10065
        }
10066
0
    }
10067
0
    extern "system" fn get_physical_device_calibrateable_time_domains_ext(
10068
0
        physical_device: vk::PhysicalDevice,
10069
0
        p_time_domain_count: *mut u32,
10070
0
        p_time_domains: *mut vk::TimeDomainEXT,
10071
0
    ) -> vk::Result {
10072
0
        let global = Self::instance();
10073
0
        // vkGetPhysicalDeviceCalibrateableTimeDomainsEXT
10074
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10075
0
        let dispatch_table = &instance_info.dispatch_table.ext_calibrated_timestamps;
10076
0
        let layer_result = instance_info
10077
0
            .customized_info
10078
0
            .borrow()
10079
0
            .hooks()
10080
0
            .get_physical_device_calibrateable_time_domains_ext(physical_device);
10081
0
        match layer_result {
10082
0
            LayerResult::Handled(res) => match res {
10083
0
                Ok(res) => unsafe {
10084
0
                    fill_vk_out_array(
10085
0
                        &res,
10086
0
                        NonNull::new(p_time_domain_count).unwrap(),
10087
0
                        p_time_domains,
10088
0
                    )
10089
                },
10090
0
                Err(e) => e,
10091
            },
10092
            LayerResult::Unhandled => unsafe {
10093
0
                (dispatch_table.get_physical_device_calibrateable_time_domains_ext)(
10094
0
                    physical_device,
10095
0
                    p_time_domain_count,
10096
0
                    p_time_domains,
10097
0
                )
10098
            },
10099
        }
10100
0
    }
10101
0
    extern "system" fn create_image_pipe_surface_fuchsia(
10102
0
        instance: vk::Instance,
10103
0
        p_create_info: *const vk::ImagePipeSurfaceCreateInfoFUCHSIA,
10104
0
        p_allocator: *const vk::AllocationCallbacks,
10105
0
        p_surface: *mut vk::SurfaceKHR,
10106
0
    ) -> vk::Result {
10107
0
        let global = Self::instance();
10108
0
        // vkCreateImagePipeSurfaceFUCHSIA
10109
0
        let instance_info = global.get_instance_info(instance).unwrap();
10110
0
        let dispatch_table = &instance_info.dispatch_table.fuchsia_imagepipe_surface;
10111
0
        let layer_result = instance_info
10112
0
            .customized_info
10113
0
            .borrow()
10114
0
            .hooks()
10115
0
            .create_image_pipe_surface_fuchsia(
10116
0
                unsafe { p_create_info.as_ref() }.unwrap(),
10117
0
                unsafe { p_allocator.as_ref() },
10118
0
            );
10119
0
        match layer_result {
10120
0
            LayerResult::Handled(res) => match res {
10121
0
                Ok(res) => {
10122
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10123
0
                    vk::Result::SUCCESS
10124
                }
10125
0
                Err(e) => e,
10126
            },
10127
            LayerResult::Unhandled => unsafe {
10128
0
                (dispatch_table.create_image_pipe_surface_fuchsia)(
10129
0
                    instance,
10130
0
                    p_create_info,
10131
0
                    p_allocator,
10132
0
                    p_surface,
10133
0
                )
10134
            },
10135
        }
10136
0
    }
10137
0
    extern "system" fn create_metal_surface_ext(
10138
0
        instance: vk::Instance,
10139
0
        p_create_info: *const vk::MetalSurfaceCreateInfoEXT,
10140
0
        p_allocator: *const vk::AllocationCallbacks,
10141
0
        p_surface: *mut vk::SurfaceKHR,
10142
0
    ) -> vk::Result {
10143
0
        let global = Self::instance();
10144
0
        // vkCreateMetalSurfaceEXT
10145
0
        let instance_info = global.get_instance_info(instance).unwrap();
10146
0
        let dispatch_table = &instance_info.dispatch_table.ext_metal_surface;
10147
0
        let layer_result = instance_info
10148
0
            .customized_info
10149
0
            .borrow()
10150
0
            .hooks()
10151
0
            .create_metal_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10152
0
                p_allocator.as_ref()
10153
0
            });
10154
0
        match layer_result {
10155
0
            LayerResult::Handled(res) => match res {
10156
0
                Ok(res) => {
10157
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10158
0
                    vk::Result::SUCCESS
10159
                }
10160
0
                Err(e) => e,
10161
            },
10162
            LayerResult::Unhandled => unsafe {
10163
0
                (dispatch_table.create_metal_surface_ext)(
10164
0
                    instance,
10165
0
                    p_create_info,
10166
0
                    p_allocator,
10167
0
                    p_surface,
10168
0
                )
10169
            },
10170
        }
10171
0
    }
10172
0
    extern "system" fn get_physical_device_cooperative_matrix_properties_nv(
10173
0
        physical_device: vk::PhysicalDevice,
10174
0
        p_property_count: *mut u32,
10175
0
        p_properties: *mut vk::CooperativeMatrixPropertiesNV,
10176
0
    ) -> vk::Result {
10177
0
        let global = Self::instance();
10178
0
        // vkGetPhysicalDeviceCooperativeMatrixPropertiesNV
10179
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10180
0
        let dispatch_table = &instance_info.dispatch_table.nv_cooperative_matrix;
10181
0
        let layer_result = instance_info
10182
0
            .customized_info
10183
0
            .borrow()
10184
0
            .hooks()
10185
0
            .get_physical_device_cooperative_matrix_properties_nv(
10186
0
                physical_device,
10187
0
                unsafe { ptr_as_uninit_mut(p_property_count) }.unwrap(),
10188
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_property_count) },
10189
0
            );
10190
0
        match layer_result {
10191
0
            LayerResult::Handled(res) => match res {
10192
0
                Ok(()) => vk::Result::SUCCESS,
10193
0
                Err(e) => e,
10194
            },
10195
            LayerResult::Unhandled => unsafe {
10196
0
                (dispatch_table.get_physical_device_cooperative_matrix_properties_nv)(
10197
0
                    physical_device,
10198
0
                    p_property_count,
10199
0
                    p_properties,
10200
0
                )
10201
            },
10202
        }
10203
0
    }
10204
0
    extern "system" fn get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10205
0
        physical_device: vk::PhysicalDevice,
10206
0
        p_combination_count: *mut u32,
10207
0
        p_combinations: *mut vk::FramebufferMixedSamplesCombinationNV,
10208
0
    ) -> vk::Result {
10209
0
        let global = Self::instance();
10210
0
        // vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
10211
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10212
0
        let dispatch_table = &instance_info.dispatch_table.nv_coverage_reduction_mode;
10213
0
        let layer_result = instance_info
10214
0
            .customized_info
10215
0
            .borrow()
10216
0
            .hooks()
10217
0
            .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv(
10218
0
                physical_device,
10219
0
                unsafe { ptr_as_uninit_mut(p_combination_count) }.unwrap(),
10220
0
                unsafe {
10221
0
                    maybe_uninit_slice_from_raw_parts_mut(p_combinations, p_combination_count)
10222
0
                },
10223
0
            );
10224
0
        match layer_result {
10225
0
            LayerResult::Handled(res) => match res {
10226
0
                Ok(()) => vk::Result::SUCCESS,
10227
0
                Err(e) => e,
10228
            },
10229
            LayerResult::Unhandled => unsafe {
10230
0
                (dispatch_table
10231
0
                    .get_physical_device_supported_framebuffer_mixed_samples_combinations_nv)(
10232
0
                    physical_device,
10233
0
                    p_combination_count,
10234
0
                    p_combinations,
10235
0
                )
10236
            },
10237
        }
10238
0
    }
10239
0
    extern "system" fn get_physical_device_surface_present_modes2_ext(
10240
0
        physical_device: vk::PhysicalDevice,
10241
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
10242
0
        p_present_mode_count: *mut u32,
10243
0
        p_present_modes: *mut vk::PresentModeKHR,
10244
0
    ) -> vk::Result {
10245
0
        let global = Self::instance();
10246
0
        // vkGetPhysicalDeviceSurfacePresentModes2EXT
10247
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10248
0
        let dispatch_table = &instance_info.dispatch_table.ext_full_screen_exclusive;
10249
0
        let layer_result = instance_info
10250
0
            .customized_info
10251
0
            .borrow()
10252
0
            .hooks()
10253
0
            .get_physical_device_surface_present_modes2_ext(
10254
0
                physical_device,
10255
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
10256
0
            );
10257
0
        match layer_result {
10258
0
            LayerResult::Handled(res) => match res {
10259
0
                Ok(res) => unsafe {
10260
0
                    fill_vk_out_array(
10261
0
                        &res,
10262
0
                        NonNull::new(p_present_mode_count).unwrap(),
10263
0
                        p_present_modes,
10264
0
                    )
10265
                },
10266
0
                Err(e) => e,
10267
            },
10268
            LayerResult::Unhandled => unsafe {
10269
0
                (dispatch_table.get_physical_device_surface_present_modes2_ext)(
10270
0
                    physical_device,
10271
0
                    p_surface_info,
10272
0
                    p_present_mode_count,
10273
0
                    p_present_modes,
10274
0
                )
10275
            },
10276
        }
10277
0
    }
10278
0
    extern "system" fn create_headless_surface_ext(
10279
0
        instance: vk::Instance,
10280
0
        p_create_info: *const vk::HeadlessSurfaceCreateInfoEXT,
10281
0
        p_allocator: *const vk::AllocationCallbacks,
10282
0
        p_surface: *mut vk::SurfaceKHR,
10283
0
    ) -> vk::Result {
10284
0
        let global = Self::instance();
10285
0
        // vkCreateHeadlessSurfaceEXT
10286
0
        let instance_info = global.get_instance_info(instance).unwrap();
10287
0
        let dispatch_table = &instance_info.dispatch_table.ext_headless_surface;
10288
0
        let layer_result = instance_info
10289
0
            .customized_info
10290
0
            .borrow()
10291
0
            .hooks()
10292
0
            .create_headless_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10293
0
                p_allocator.as_ref()
10294
0
            });
10295
0
        match layer_result {
10296
0
            LayerResult::Handled(res) => match res {
10297
0
                Ok(res) => {
10298
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10299
0
                    vk::Result::SUCCESS
10300
                }
10301
0
                Err(e) => e,
10302
            },
10303
            LayerResult::Unhandled => unsafe {
10304
0
                (dispatch_table.create_headless_surface_ext)(
10305
0
                    instance,
10306
0
                    p_create_info,
10307
0
                    p_allocator,
10308
0
                    p_surface,
10309
0
                )
10310
            },
10311
        }
10312
0
    }
10313
0
    extern "system" fn acquire_drm_display_ext(
10314
0
        physical_device: vk::PhysicalDevice,
10315
0
        drm_fd: i32,
10316
0
        display: vk::DisplayKHR,
10317
0
    ) -> vk::Result {
10318
0
        let global = Self::instance();
10319
0
        // vkAcquireDrmDisplayEXT
10320
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10321
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10322
0
        let layer_result = instance_info
10323
0
            .customized_info
10324
0
            .borrow()
10325
0
            .hooks()
10326
0
            .acquire_drm_display_ext(physical_device, drm_fd, display);
10327
0
        match layer_result {
10328
0
            LayerResult::Handled(res) => match res {
10329
0
                Ok(()) => vk::Result::SUCCESS,
10330
0
                Err(e) => e,
10331
            },
10332
            LayerResult::Unhandled => unsafe {
10333
0
                (dispatch_table.acquire_drm_display_ext)(physical_device, drm_fd, display)
10334
            },
10335
        }
10336
0
    }
10337
0
    extern "system" fn get_drm_display_ext(
10338
0
        physical_device: vk::PhysicalDevice,
10339
0
        drm_fd: i32,
10340
0
        connector_id: u32,
10341
0
        display: *mut vk::DisplayKHR,
10342
0
    ) -> vk::Result {
10343
0
        let global = Self::instance();
10344
0
        // vkGetDrmDisplayEXT
10345
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10346
0
        let dispatch_table = &instance_info.dispatch_table.ext_acquire_drm_display;
10347
0
        let layer_result = instance_info
10348
0
            .customized_info
10349
0
            .borrow()
10350
0
            .hooks()
10351
0
            .get_drm_display_ext(physical_device, drm_fd, connector_id);
10352
0
        match layer_result {
10353
0
            LayerResult::Handled(res) => match res {
10354
0
                Ok(res) => {
10355
0
                    *unsafe { display.as_mut() }.unwrap() = res;
10356
0
                    vk::Result::SUCCESS
10357
                }
10358
0
                Err(e) => e,
10359
            },
10360
            LayerResult::Unhandled => unsafe {
10361
0
                (dispatch_table.get_drm_display_ext)(physical_device, drm_fd, connector_id, display)
10362
            },
10363
        }
10364
0
    }
10365
0
    extern "system" fn acquire_winrt_display_nv(
10366
0
        physical_device: vk::PhysicalDevice,
10367
0
        display: vk::DisplayKHR,
10368
0
    ) -> vk::Result {
10369
0
        let global = Self::instance();
10370
0
        // vkAcquireWinrtDisplayNV
10371
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10372
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10373
0
        let layer_result = instance_info
10374
0
            .customized_info
10375
0
            .borrow()
10376
0
            .hooks()
10377
0
            .acquire_winrt_display_nv(physical_device, display);
10378
0
        match layer_result {
10379
0
            LayerResult::Handled(res) => match res {
10380
0
                Ok(()) => vk::Result::SUCCESS,
10381
0
                Err(e) => e,
10382
            },
10383
            LayerResult::Unhandled => unsafe {
10384
0
                (dispatch_table.acquire_winrt_display_nv)(physical_device, display)
10385
            },
10386
        }
10387
0
    }
10388
0
    extern "system" fn get_winrt_display_nv(
10389
0
        physical_device: vk::PhysicalDevice,
10390
0
        device_relative_id: u32,
10391
0
        p_display: *mut vk::DisplayKHR,
10392
0
    ) -> vk::Result {
10393
0
        let global = Self::instance();
10394
0
        // vkGetWinrtDisplayNV
10395
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10396
0
        let dispatch_table = &instance_info.dispatch_table.nv_acquire_winrt_display;
10397
0
        let layer_result = instance_info
10398
0
            .customized_info
10399
0
            .borrow()
10400
0
            .hooks()
10401
0
            .get_winrt_display_nv(physical_device, device_relative_id);
10402
0
        match layer_result {
10403
0
            LayerResult::Handled(res) => match res {
10404
0
                Ok(res) => {
10405
0
                    *unsafe { p_display.as_mut() }.unwrap() = res;
10406
0
                    vk::Result::SUCCESS
10407
                }
10408
0
                Err(e) => e,
10409
            },
10410
            LayerResult::Unhandled => unsafe {
10411
0
                (dispatch_table.get_winrt_display_nv)(
10412
0
                    physical_device,
10413
0
                    device_relative_id,
10414
0
                    p_display,
10415
0
                )
10416
            },
10417
        }
10418
0
    }
10419
0
    extern "system" fn create_direct_fb_surface_ext(
10420
0
        instance: vk::Instance,
10421
0
        p_create_info: *const vk::DirectFBSurfaceCreateInfoEXT,
10422
0
        p_allocator: *const vk::AllocationCallbacks,
10423
0
        p_surface: *mut vk::SurfaceKHR,
10424
0
    ) -> vk::Result {
10425
0
        let global = Self::instance();
10426
0
        // vkCreateDirectFBSurfaceEXT
10427
0
        let instance_info = global.get_instance_info(instance).unwrap();
10428
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10429
0
        let layer_result = instance_info
10430
0
            .customized_info
10431
0
            .borrow()
10432
0
            .hooks()
10433
0
            .create_direct_fb_surface_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10434
0
                p_allocator.as_ref()
10435
0
            });
10436
0
        match layer_result {
10437
0
            LayerResult::Handled(res) => match res {
10438
0
                Ok(res) => {
10439
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10440
0
                    vk::Result::SUCCESS
10441
                }
10442
0
                Err(e) => e,
10443
            },
10444
            LayerResult::Unhandled => unsafe {
10445
0
                (dispatch_table.create_direct_fb_surface_ext)(
10446
0
                    instance,
10447
0
                    p_create_info,
10448
0
                    p_allocator,
10449
0
                    p_surface,
10450
0
                )
10451
            },
10452
        }
10453
0
    }
10454
0
    extern "system" fn get_physical_device_direct_fb_presentation_support_ext(
10455
0
        physical_device: vk::PhysicalDevice,
10456
0
        queue_family_index: u32,
10457
0
        dfb: *mut vk::IDirectFB,
10458
0
    ) -> vk::Bool32 {
10459
0
        let global = Self::instance();
10460
0
        // vkGetPhysicalDeviceDirectFBPresentationSupportEXT
10461
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10462
0
        let dispatch_table = &instance_info.dispatch_table.ext_directfb_surface;
10463
0
        let layer_result = instance_info
10464
0
            .customized_info
10465
0
            .borrow()
10466
0
            .hooks()
10467
0
            .get_physical_device_direct_fb_presentation_support_ext(
10468
0
                physical_device,
10469
0
                queue_family_index,
10470
0
                unsafe { ptr_as_uninit_mut(dfb) }.unwrap(),
10471
0
            );
10472
0
        match layer_result {
10473
0
            LayerResult::Handled(res) => {
10474
0
                if res {
10475
0
                    vk::TRUE
10476
                } else {
10477
0
                    vk::FALSE
10478
                }
10479
            }
10480
            LayerResult::Unhandled => unsafe {
10481
0
                (dispatch_table.get_physical_device_direct_fb_presentation_support_ext)(
10482
0
                    physical_device,
10483
0
                    queue_family_index,
10484
0
                    dfb,
10485
0
                )
10486
            },
10487
        }
10488
0
    }
10489
0
    extern "system" fn create_screen_surface_qnx(
10490
0
        instance: vk::Instance,
10491
0
        p_create_info: *const vk::ScreenSurfaceCreateInfoQNX,
10492
0
        p_allocator: *const vk::AllocationCallbacks,
10493
0
        p_surface: *mut vk::SurfaceKHR,
10494
0
    ) -> vk::Result {
10495
0
        let global = Self::instance();
10496
0
        // vkCreateScreenSurfaceQNX
10497
0
        let instance_info = global.get_instance_info(instance).unwrap();
10498
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10499
0
        let layer_result = instance_info
10500
0
            .customized_info
10501
0
            .borrow()
10502
0
            .hooks()
10503
0
            .create_screen_surface_qnx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
10504
0
                p_allocator.as_ref()
10505
0
            });
10506
0
        match layer_result {
10507
0
            LayerResult::Handled(res) => match res {
10508
0
                Ok(res) => {
10509
0
                    *unsafe { p_surface.as_mut() }.unwrap() = res;
10510
0
                    vk::Result::SUCCESS
10511
                }
10512
0
                Err(e) => e,
10513
            },
10514
            LayerResult::Unhandled => unsafe {
10515
0
                (dispatch_table.create_screen_surface_qnx)(
10516
0
                    instance,
10517
0
                    p_create_info,
10518
0
                    p_allocator,
10519
0
                    p_surface,
10520
0
                )
10521
            },
10522
        }
10523
0
    }
10524
0
    extern "system" fn get_physical_device_screen_presentation_support_qnx(
10525
0
        physical_device: vk::PhysicalDevice,
10526
0
        queue_family_index: u32,
10527
0
        window: *mut vk::_screen_window,
10528
0
    ) -> vk::Bool32 {
10529
0
        let global = Self::instance();
10530
0
        // vkGetPhysicalDeviceScreenPresentationSupportQNX
10531
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10532
0
        let dispatch_table = &instance_info.dispatch_table.qnx_screen_surface;
10533
0
        let layer_result = instance_info
10534
0
            .customized_info
10535
0
            .borrow()
10536
0
            .hooks()
10537
0
            .get_physical_device_screen_presentation_support_qnx(
10538
0
                physical_device,
10539
0
                queue_family_index,
10540
0
                window,
10541
0
            );
10542
0
        match layer_result {
10543
0
            LayerResult::Handled(res) => {
10544
0
                if res {
10545
0
                    vk::TRUE
10546
                } else {
10547
0
                    vk::FALSE
10548
                }
10549
            }
10550
            LayerResult::Unhandled => unsafe {
10551
0
                (dispatch_table.get_physical_device_screen_presentation_support_qnx)(
10552
0
                    physical_device,
10553
0
                    queue_family_index,
10554
0
                    window,
10555
0
                )
10556
            },
10557
        }
10558
0
    }
10559
0
    extern "system" fn get_physical_device_optical_flow_image_formats_nv(
10560
0
        physical_device: vk::PhysicalDevice,
10561
0
        p_optical_flow_image_format_info: *const vk::OpticalFlowImageFormatInfoNV,
10562
0
        p_format_count: *mut u32,
10563
0
        p_image_format_properties: *mut vk::OpticalFlowImageFormatPropertiesNV,
10564
0
    ) -> vk::Result {
10565
0
        let global = Self::instance();
10566
0
        // vkGetPhysicalDeviceOpticalFlowImageFormatsNV
10567
0
        let instance_info = global.get_instance_info(physical_device).unwrap();
10568
0
        let dispatch_table = &instance_info.dispatch_table.nv_optical_flow;
10569
0
        let layer_result = instance_info
10570
0
            .customized_info
10571
0
            .borrow()
10572
0
            .hooks()
10573
0
            .get_physical_device_optical_flow_image_formats_nv(
10574
0
                physical_device,
10575
0
                unsafe { p_optical_flow_image_format_info.as_ref() }.unwrap(),
10576
0
                unsafe { ptr_as_uninit_mut(p_format_count) }.unwrap(),
10577
0
                unsafe {
10578
0
                    maybe_uninit_slice_from_raw_parts_mut(p_image_format_properties, p_format_count)
10579
0
                },
10580
0
            );
10581
0
        match layer_result {
10582
0
            LayerResult::Handled(res) => match res {
10583
0
                Ok(()) => vk::Result::SUCCESS,
10584
0
                Err(e) => e,
10585
            },
10586
            LayerResult::Unhandled => unsafe {
10587
0
                (dispatch_table.get_physical_device_optical_flow_image_formats_nv)(
10588
0
                    physical_device,
10589
0
                    p_optical_flow_image_format_info,
10590
0
                    p_format_count,
10591
0
                    p_image_format_properties,
10592
0
                )
10593
            },
10594
        }
10595
0
    }
10596
0
    extern "system" fn get_device_queue(
10597
0
        device: vk::Device,
10598
0
        queue_family_index: u32,
10599
0
        queue_index: u32,
10600
0
        p_queue: *mut vk::Queue,
10601
0
    ) {
10602
0
        let global = Self::instance();
10603
0
        // vkGetDeviceQueue
10604
0
        let device_info = global.get_device_info(device).unwrap();
10605
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10606
0
        let layer_result = device_info
10607
0
            .customized_info
10608
0
            .borrow()
10609
0
            .hooks()
10610
0
            .get_device_queue(queue_family_index, queue_index);
10611
0
        match layer_result {
10612
0
            LayerResult::Handled(res) => {
10613
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
10614
0
            }
10615
            LayerResult::Unhandled => unsafe {
10616
0
                (dispatch_table.get_device_queue)(device, queue_family_index, queue_index, p_queue)
10617
            },
10618
        }
10619
0
    }
10620
0
    extern "system" fn queue_submit(
10621
0
        queue: vk::Queue,
10622
0
        submit_count: u32,
10623
0
        p_submits: *const vk::SubmitInfo,
10624
0
        fence: vk::Fence,
10625
0
    ) -> vk::Result {
10626
0
        let global = Self::instance();
10627
0
        // vkQueueSubmit
10628
0
        let device_info = global.get_device_info(queue).unwrap();
10629
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10630
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit(
10631
0
            queue,
10632
0
            unsafe { slice_from_raw_parts(p_submits, submit_count) },
10633
0
            fence,
10634
0
        );
10635
0
        match layer_result {
10636
0
            LayerResult::Handled(res) => match res {
10637
0
                Ok(()) => vk::Result::SUCCESS,
10638
0
                Err(e) => e,
10639
            },
10640
            LayerResult::Unhandled => unsafe {
10641
0
                (dispatch_table.queue_submit)(queue, submit_count, p_submits, fence)
10642
            },
10643
        }
10644
0
    }
10645
0
    extern "system" fn queue_wait_idle(queue: vk::Queue) -> vk::Result {
10646
0
        let global = Self::instance();
10647
0
        // vkQueueWaitIdle
10648
0
        let device_info = global.get_device_info(queue).unwrap();
10649
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10650
0
        let layer_result = device_info
10651
0
            .customized_info
10652
0
            .borrow()
10653
0
            .hooks()
10654
0
            .queue_wait_idle(queue);
10655
0
        match layer_result {
10656
0
            LayerResult::Handled(res) => match res {
10657
0
                Ok(()) => vk::Result::SUCCESS,
10658
0
                Err(e) => e,
10659
            },
10660
0
            LayerResult::Unhandled => unsafe { (dispatch_table.queue_wait_idle)(queue) },
10661
        }
10662
0
    }
10663
0
    extern "system" fn device_wait_idle(device: vk::Device) -> vk::Result {
10664
0
        let global = Self::instance();
10665
0
        // vkDeviceWaitIdle
10666
0
        let device_info = global.get_device_info(device).unwrap();
10667
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10668
0
        let layer_result = device_info
10669
0
            .customized_info
10670
0
            .borrow()
10671
0
            .hooks()
10672
0
            .device_wait_idle();
10673
0
        match layer_result {
10674
0
            LayerResult::Handled(res) => match res {
10675
0
                Ok(()) => vk::Result::SUCCESS,
10676
0
                Err(e) => e,
10677
            },
10678
0
            LayerResult::Unhandled => unsafe { (dispatch_table.device_wait_idle)(device) },
10679
        }
10680
0
    }
10681
0
    extern "system" fn allocate_memory(
10682
0
        device: vk::Device,
10683
0
        p_allocate_info: *const vk::MemoryAllocateInfo,
10684
0
        p_allocator: *const vk::AllocationCallbacks,
10685
0
        p_memory: *mut vk::DeviceMemory,
10686
0
    ) -> vk::Result {
10687
0
        let global = Self::instance();
10688
0
        // vkAllocateMemory
10689
0
        let device_info = global.get_device_info(device).unwrap();
10690
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10691
0
        let layer_result = device_info
10692
0
            .customized_info
10693
0
            .borrow()
10694
0
            .hooks()
10695
0
            .allocate_memory(unsafe { p_allocate_info.as_ref() }.unwrap(), unsafe {
10696
0
                p_allocator.as_ref()
10697
0
            });
10698
0
        match layer_result {
10699
0
            LayerResult::Handled(res) => match res {
10700
0
                Ok(res) => {
10701
0
                    *unsafe { p_memory.as_mut() }.unwrap() = res;
10702
0
                    vk::Result::SUCCESS
10703
                }
10704
0
                Err(e) => e,
10705
            },
10706
            LayerResult::Unhandled => unsafe {
10707
0
                (dispatch_table.allocate_memory)(device, p_allocate_info, p_allocator, p_memory)
10708
            },
10709
        }
10710
0
    }
10711
0
    extern "system" fn free_memory(
10712
0
        device: vk::Device,
10713
0
        memory: vk::DeviceMemory,
10714
0
        p_allocator: *const vk::AllocationCallbacks,
10715
0
    ) {
10716
0
        let global = Self::instance();
10717
0
        // vkFreeMemory
10718
0
        let device_info = global.get_device_info(device).unwrap();
10719
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10720
0
        let layer_result = device_info
10721
0
            .customized_info
10722
0
            .borrow()
10723
0
            .hooks()
10724
0
            .free_memory(memory, unsafe { p_allocator.as_ref() });
10725
0
        match layer_result {
10726
0
            LayerResult::Handled(res) => res,
10727
            LayerResult::Unhandled => unsafe {
10728
0
                (dispatch_table.free_memory)(device, memory, p_allocator)
10729
            },
10730
        }
10731
0
    }
10732
0
    extern "system" fn map_memory(
10733
0
        device: vk::Device,
10734
0
        memory: vk::DeviceMemory,
10735
0
        offset: vk::DeviceSize,
10736
0
        size: vk::DeviceSize,
10737
0
        flags: vk::MemoryMapFlags,
10738
0
        pp_data: *mut *mut c_void,
10739
0
    ) -> vk::Result {
10740
0
        let global = Self::instance();
10741
0
        // vkMapMemory
10742
0
        let device_info = global.get_device_info(device).unwrap();
10743
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10744
0
        let layer_result = device_info
10745
0
            .customized_info
10746
0
            .borrow()
10747
0
            .hooks()
10748
0
            .map_memory(memory, offset, size, flags);
10749
0
        match layer_result {
10750
0
            LayerResult::Handled(res) => match res {
10751
0
                Ok(res) => {
10752
0
                    *unsafe { pp_data.as_mut() }.unwrap() = res.unwrap_or(std::ptr::null_mut());
10753
0
                    vk::Result::SUCCESS
10754
                }
10755
0
                Err(e) => e,
10756
            },
10757
            LayerResult::Unhandled => unsafe {
10758
0
                (dispatch_table.map_memory)(device, memory, offset, size, flags, pp_data)
10759
            },
10760
        }
10761
0
    }
10762
0
    extern "system" fn unmap_memory(device: vk::Device, memory: vk::DeviceMemory) {
10763
0
        let global = Self::instance();
10764
0
        // vkUnmapMemory
10765
0
        let device_info = global.get_device_info(device).unwrap();
10766
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10767
0
        let layer_result = device_info
10768
0
            .customized_info
10769
0
            .borrow()
10770
0
            .hooks()
10771
0
            .unmap_memory(memory);
10772
0
        match layer_result {
10773
0
            LayerResult::Handled(res) => res,
10774
0
            LayerResult::Unhandled => unsafe { (dispatch_table.unmap_memory)(device, memory) },
10775
        }
10776
0
    }
10777
0
    extern "system" fn flush_mapped_memory_ranges(
10778
0
        device: vk::Device,
10779
0
        memory_range_count: u32,
10780
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10781
0
    ) -> vk::Result {
10782
0
        let global = Self::instance();
10783
0
        // vkFlushMappedMemoryRanges
10784
0
        let device_info = global.get_device_info(device).unwrap();
10785
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10786
0
        let layer_result = device_info
10787
0
            .customized_info
10788
0
            .borrow()
10789
0
            .hooks()
10790
0
            .flush_mapped_memory_ranges(unsafe {
10791
0
                slice_from_raw_parts(p_memory_ranges, memory_range_count)
10792
0
            });
10793
0
        match layer_result {
10794
0
            LayerResult::Handled(res) => match res {
10795
0
                Ok(()) => vk::Result::SUCCESS,
10796
0
                Err(e) => e,
10797
            },
10798
            LayerResult::Unhandled => unsafe {
10799
0
                (dispatch_table.flush_mapped_memory_ranges)(
10800
0
                    device,
10801
0
                    memory_range_count,
10802
0
                    p_memory_ranges,
10803
0
                )
10804
            },
10805
        }
10806
0
    }
10807
0
    extern "system" fn invalidate_mapped_memory_ranges(
10808
0
        device: vk::Device,
10809
0
        memory_range_count: u32,
10810
0
        p_memory_ranges: *const vk::MappedMemoryRange,
10811
0
    ) -> vk::Result {
10812
0
        let global = Self::instance();
10813
0
        // vkInvalidateMappedMemoryRanges
10814
0
        let device_info = global.get_device_info(device).unwrap();
10815
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10816
0
        let layer_result = device_info
10817
0
            .customized_info
10818
0
            .borrow()
10819
0
            .hooks()
10820
0
            .invalidate_mapped_memory_ranges(unsafe {
10821
0
                slice_from_raw_parts(p_memory_ranges, memory_range_count)
10822
0
            });
10823
0
        match layer_result {
10824
0
            LayerResult::Handled(res) => match res {
10825
0
                Ok(()) => vk::Result::SUCCESS,
10826
0
                Err(e) => e,
10827
            },
10828
            LayerResult::Unhandled => unsafe {
10829
0
                (dispatch_table.invalidate_mapped_memory_ranges)(
10830
0
                    device,
10831
0
                    memory_range_count,
10832
0
                    p_memory_ranges,
10833
0
                )
10834
            },
10835
        }
10836
0
    }
10837
0
    extern "system" fn get_device_memory_commitment(
10838
0
        device: vk::Device,
10839
0
        memory: vk::DeviceMemory,
10840
0
        p_committed_memory_in_bytes: *mut vk::DeviceSize,
10841
0
    ) {
10842
0
        let global = Self::instance();
10843
0
        // vkGetDeviceMemoryCommitment
10844
0
        let device_info = global.get_device_info(device).unwrap();
10845
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10846
0
        let layer_result = device_info
10847
0
            .customized_info
10848
0
            .borrow()
10849
0
            .hooks()
10850
0
            .get_device_memory_commitment(memory);
10851
0
        match layer_result {
10852
0
            LayerResult::Handled(res) => {
10853
0
                *unsafe { p_committed_memory_in_bytes.as_mut() }.unwrap() = res;
10854
0
            }
10855
            LayerResult::Unhandled => unsafe {
10856
0
                (dispatch_table.get_device_memory_commitment)(
10857
0
                    device,
10858
0
                    memory,
10859
0
                    p_committed_memory_in_bytes,
10860
0
                )
10861
            },
10862
        }
10863
0
    }
10864
0
    extern "system" fn bind_buffer_memory(
10865
0
        device: vk::Device,
10866
0
        buffer: vk::Buffer,
10867
0
        memory: vk::DeviceMemory,
10868
0
        memory_offset: vk::DeviceSize,
10869
0
    ) -> vk::Result {
10870
0
        let global = Self::instance();
10871
0
        // vkBindBufferMemory
10872
0
        let device_info = global.get_device_info(device).unwrap();
10873
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10874
0
        let layer_result = device_info
10875
0
            .customized_info
10876
0
            .borrow()
10877
0
            .hooks()
10878
0
            .bind_buffer_memory(buffer, memory, memory_offset);
10879
0
        match layer_result {
10880
0
            LayerResult::Handled(res) => match res {
10881
0
                Ok(()) => vk::Result::SUCCESS,
10882
0
                Err(e) => e,
10883
            },
10884
            LayerResult::Unhandled => unsafe {
10885
0
                (dispatch_table.bind_buffer_memory)(device, buffer, memory, memory_offset)
10886
            },
10887
        }
10888
0
    }
10889
0
    extern "system" fn bind_image_memory(
10890
0
        device: vk::Device,
10891
0
        image: vk::Image,
10892
0
        memory: vk::DeviceMemory,
10893
0
        memory_offset: vk::DeviceSize,
10894
0
    ) -> vk::Result {
10895
0
        let global = Self::instance();
10896
0
        // vkBindImageMemory
10897
0
        let device_info = global.get_device_info(device).unwrap();
10898
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10899
0
        let layer_result = device_info
10900
0
            .customized_info
10901
0
            .borrow()
10902
0
            .hooks()
10903
0
            .bind_image_memory(image, memory, memory_offset);
10904
0
        match layer_result {
10905
0
            LayerResult::Handled(res) => match res {
10906
0
                Ok(()) => vk::Result::SUCCESS,
10907
0
                Err(e) => e,
10908
            },
10909
            LayerResult::Unhandled => unsafe {
10910
0
                (dispatch_table.bind_image_memory)(device, image, memory, memory_offset)
10911
            },
10912
        }
10913
0
    }
10914
0
    extern "system" fn get_buffer_memory_requirements(
10915
0
        device: vk::Device,
10916
0
        buffer: vk::Buffer,
10917
0
        p_memory_requirements: *mut vk::MemoryRequirements,
10918
0
    ) {
10919
0
        let global = Self::instance();
10920
0
        // vkGetBufferMemoryRequirements
10921
0
        let device_info = global.get_device_info(device).unwrap();
10922
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10923
0
        let layer_result = device_info
10924
0
            .customized_info
10925
0
            .borrow()
10926
0
            .hooks()
10927
0
            .get_buffer_memory_requirements(
10928
0
                buffer,
10929
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
10930
0
            );
10931
0
        match layer_result {
10932
0
            LayerResult::Handled(res) => res,
10933
            LayerResult::Unhandled => unsafe {
10934
0
                (dispatch_table.get_buffer_memory_requirements)(
10935
0
                    device,
10936
0
                    buffer,
10937
0
                    p_memory_requirements,
10938
0
                )
10939
            },
10940
        }
10941
0
    }
10942
0
    extern "system" fn get_image_memory_requirements(
10943
0
        device: vk::Device,
10944
0
        image: vk::Image,
10945
0
        p_memory_requirements: *mut vk::MemoryRequirements,
10946
0
    ) {
10947
0
        let global = Self::instance();
10948
0
        // vkGetImageMemoryRequirements
10949
0
        let device_info = global.get_device_info(device).unwrap();
10950
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10951
0
        let layer_result = device_info
10952
0
            .customized_info
10953
0
            .borrow()
10954
0
            .hooks()
10955
0
            .get_image_memory_requirements(
10956
0
                image,
10957
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
10958
0
            );
10959
0
        match layer_result {
10960
0
            LayerResult::Handled(res) => res,
10961
            LayerResult::Unhandled => unsafe {
10962
0
                (dispatch_table.get_image_memory_requirements)(device, image, p_memory_requirements)
10963
            },
10964
        }
10965
0
    }
10966
0
    extern "system" fn get_image_sparse_memory_requirements(
10967
0
        device: vk::Device,
10968
0
        image: vk::Image,
10969
0
        p_sparse_memory_requirement_count: *mut u32,
10970
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements,
10971
0
    ) {
10972
0
        let global = Self::instance();
10973
0
        // vkGetImageSparseMemoryRequirements
10974
0
        let device_info = global.get_device_info(device).unwrap();
10975
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
10976
0
        let layer_result = device_info
10977
0
            .customized_info
10978
0
            .borrow()
10979
0
            .hooks()
10980
0
            .get_image_sparse_memory_requirements(
10981
0
                image,
10982
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
10983
0
                unsafe {
10984
0
                    maybe_uninit_slice_from_raw_parts_mut(
10985
0
                        p_sparse_memory_requirements,
10986
0
                        p_sparse_memory_requirement_count,
10987
0
                    )
10988
0
                },
10989
0
            );
10990
0
        match layer_result {
10991
0
            LayerResult::Handled(res) => res,
10992
            LayerResult::Unhandled => unsafe {
10993
0
                (dispatch_table.get_image_sparse_memory_requirements)(
10994
0
                    device,
10995
0
                    image,
10996
0
                    p_sparse_memory_requirement_count,
10997
0
                    p_sparse_memory_requirements,
10998
0
                )
10999
            },
11000
        }
11001
0
    }
11002
0
    extern "system" fn queue_bind_sparse(
11003
0
        queue: vk::Queue,
11004
0
        bind_info_count: u32,
11005
0
        p_bind_info: *const vk::BindSparseInfo,
11006
0
        fence: vk::Fence,
11007
0
    ) -> vk::Result {
11008
0
        let global = Self::instance();
11009
0
        // vkQueueBindSparse
11010
0
        let device_info = global.get_device_info(queue).unwrap();
11011
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11012
0
        let layer_result = device_info
11013
0
            .customized_info
11014
0
            .borrow()
11015
0
            .hooks()
11016
0
            .queue_bind_sparse(
11017
0
                queue,
11018
0
                unsafe { slice_from_raw_parts(p_bind_info, bind_info_count) },
11019
0
                fence,
11020
0
            );
11021
0
        match layer_result {
11022
0
            LayerResult::Handled(res) => match res {
11023
0
                Ok(()) => vk::Result::SUCCESS,
11024
0
                Err(e) => e,
11025
            },
11026
            LayerResult::Unhandled => unsafe {
11027
0
                (dispatch_table.queue_bind_sparse)(queue, bind_info_count, p_bind_info, fence)
11028
            },
11029
        }
11030
0
    }
11031
0
    extern "system" fn create_fence(
11032
0
        device: vk::Device,
11033
0
        p_create_info: *const vk::FenceCreateInfo,
11034
0
        p_allocator: *const vk::AllocationCallbacks,
11035
0
        p_fence: *mut vk::Fence,
11036
0
    ) -> vk::Result {
11037
0
        let global = Self::instance();
11038
0
        // vkCreateFence
11039
0
        let device_info = global.get_device_info(device).unwrap();
11040
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11041
0
        let layer_result = device_info
11042
0
            .customized_info
11043
0
            .borrow()
11044
0
            .hooks()
11045
0
            .create_fence(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11046
0
                p_allocator.as_ref()
11047
0
            });
11048
0
        match layer_result {
11049
0
            LayerResult::Handled(res) => match res {
11050
0
                Ok(res) => {
11051
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
11052
0
                    vk::Result::SUCCESS
11053
                }
11054
0
                Err(e) => e,
11055
            },
11056
            LayerResult::Unhandled => unsafe {
11057
0
                (dispatch_table.create_fence)(device, p_create_info, p_allocator, p_fence)
11058
            },
11059
        }
11060
0
    }
11061
0
    extern "system" fn destroy_fence(
11062
0
        device: vk::Device,
11063
0
        fence: vk::Fence,
11064
0
        p_allocator: *const vk::AllocationCallbacks,
11065
0
    ) {
11066
0
        let global = Self::instance();
11067
0
        // vkDestroyFence
11068
0
        let device_info = global.get_device_info(device).unwrap();
11069
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11070
0
        let layer_result = device_info
11071
0
            .customized_info
11072
0
            .borrow()
11073
0
            .hooks()
11074
0
            .destroy_fence(fence, unsafe { p_allocator.as_ref() });
11075
0
        match layer_result {
11076
0
            LayerResult::Handled(res) => res,
11077
            LayerResult::Unhandled => unsafe {
11078
0
                (dispatch_table.destroy_fence)(device, fence, p_allocator)
11079
            },
11080
        }
11081
0
    }
11082
0
    extern "system" fn reset_fences(
11083
0
        device: vk::Device,
11084
0
        fence_count: u32,
11085
0
        p_fences: *const vk::Fence,
11086
0
    ) -> vk::Result {
11087
0
        let global = Self::instance();
11088
0
        // vkResetFences
11089
0
        let device_info = global.get_device_info(device).unwrap();
11090
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11091
0
        let layer_result = device_info
11092
0
            .customized_info
11093
0
            .borrow()
11094
0
            .hooks()
11095
0
            .reset_fences(unsafe { slice_from_raw_parts(p_fences, fence_count) });
11096
0
        match layer_result {
11097
0
            LayerResult::Handled(res) => match res {
11098
0
                Ok(()) => vk::Result::SUCCESS,
11099
0
                Err(e) => e,
11100
            },
11101
            LayerResult::Unhandled => unsafe {
11102
0
                (dispatch_table.reset_fences)(device, fence_count, p_fences)
11103
            },
11104
        }
11105
0
    }
11106
0
    extern "system" fn get_fence_status(device: vk::Device, fence: vk::Fence) -> vk::Result {
11107
0
        let global = Self::instance();
11108
0
        // vkGetFenceStatus
11109
0
        let device_info = global.get_device_info(device).unwrap();
11110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11111
0
        let layer_result = device_info
11112
0
            .customized_info
11113
0
            .borrow()
11114
0
            .hooks()
11115
0
            .get_fence_status(fence);
11116
0
        match layer_result {
11117
0
            LayerResult::Handled(res) => match res {
11118
0
                Ok(()) => vk::Result::SUCCESS,
11119
0
                Err(e) => e,
11120
            },
11121
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_fence_status)(device, fence) },
11122
        }
11123
0
    }
11124
0
    extern "system" fn wait_for_fences(
11125
0
        device: vk::Device,
11126
0
        fence_count: u32,
11127
0
        p_fences: *const vk::Fence,
11128
0
        wait_all: vk::Bool32,
11129
0
        timeout: u64,
11130
0
    ) -> vk::Result {
11131
0
        let global = Self::instance();
11132
0
        // vkWaitForFences
11133
0
        let device_info = global.get_device_info(device).unwrap();
11134
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11135
0
        let layer_result = device_info
11136
0
            .customized_info
11137
0
            .borrow()
11138
0
            .hooks()
11139
0
            .wait_for_fences(
11140
0
                unsafe { slice_from_raw_parts(p_fences, fence_count) },
11141
0
                wait_all == vk::TRUE,
11142
0
                timeout,
11143
0
            );
11144
0
        match layer_result {
11145
0
            LayerResult::Handled(res) => match res {
11146
0
                Ok(()) => vk::Result::SUCCESS,
11147
0
                Err(e) => e,
11148
            },
11149
            LayerResult::Unhandled => unsafe {
11150
0
                (dispatch_table.wait_for_fences)(device, fence_count, p_fences, wait_all, timeout)
11151
            },
11152
        }
11153
0
    }
11154
0
    extern "system" fn create_semaphore(
11155
0
        device: vk::Device,
11156
0
        p_create_info: *const vk::SemaphoreCreateInfo,
11157
0
        p_allocator: *const vk::AllocationCallbacks,
11158
0
        p_semaphore: *mut vk::Semaphore,
11159
0
    ) -> vk::Result {
11160
0
        let global = Self::instance();
11161
0
        // vkCreateSemaphore
11162
0
        let device_info = global.get_device_info(device).unwrap();
11163
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11164
0
        let layer_result = device_info
11165
0
            .customized_info
11166
0
            .borrow()
11167
0
            .hooks()
11168
0
            .create_semaphore(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11169
0
                p_allocator.as_ref()
11170
0
            });
11171
0
        match layer_result {
11172
0
            LayerResult::Handled(res) => match res {
11173
0
                Ok(res) => {
11174
0
                    *unsafe { p_semaphore.as_mut() }.unwrap() = res;
11175
0
                    vk::Result::SUCCESS
11176
                }
11177
0
                Err(e) => e,
11178
            },
11179
            LayerResult::Unhandled => unsafe {
11180
0
                (dispatch_table.create_semaphore)(device, p_create_info, p_allocator, p_semaphore)
11181
            },
11182
        }
11183
0
    }
11184
0
    extern "system" fn destroy_semaphore(
11185
0
        device: vk::Device,
11186
0
        semaphore: vk::Semaphore,
11187
0
        p_allocator: *const vk::AllocationCallbacks,
11188
0
    ) {
11189
0
        let global = Self::instance();
11190
0
        // vkDestroySemaphore
11191
0
        let device_info = global.get_device_info(device).unwrap();
11192
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11193
0
        let layer_result = device_info
11194
0
            .customized_info
11195
0
            .borrow()
11196
0
            .hooks()
11197
0
            .destroy_semaphore(semaphore, unsafe { p_allocator.as_ref() });
11198
0
        match layer_result {
11199
0
            LayerResult::Handled(res) => res,
11200
            LayerResult::Unhandled => unsafe {
11201
0
                (dispatch_table.destroy_semaphore)(device, semaphore, p_allocator)
11202
            },
11203
        }
11204
0
    }
11205
0
    extern "system" fn create_event(
11206
0
        device: vk::Device,
11207
0
        p_create_info: *const vk::EventCreateInfo,
11208
0
        p_allocator: *const vk::AllocationCallbacks,
11209
0
        p_event: *mut vk::Event,
11210
0
    ) -> vk::Result {
11211
0
        let global = Self::instance();
11212
0
        // vkCreateEvent
11213
0
        let device_info = global.get_device_info(device).unwrap();
11214
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11215
0
        let layer_result = device_info
11216
0
            .customized_info
11217
0
            .borrow()
11218
0
            .hooks()
11219
0
            .create_event(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11220
0
                p_allocator.as_ref()
11221
0
            });
11222
0
        match layer_result {
11223
0
            LayerResult::Handled(res) => match res {
11224
0
                Ok(res) => {
11225
0
                    *unsafe { p_event.as_mut() }.unwrap() = res;
11226
0
                    vk::Result::SUCCESS
11227
                }
11228
0
                Err(e) => e,
11229
            },
11230
            LayerResult::Unhandled => unsafe {
11231
0
                (dispatch_table.create_event)(device, p_create_info, p_allocator, p_event)
11232
            },
11233
        }
11234
0
    }
11235
0
    extern "system" fn destroy_event(
11236
0
        device: vk::Device,
11237
0
        event: vk::Event,
11238
0
        p_allocator: *const vk::AllocationCallbacks,
11239
0
    ) {
11240
0
        let global = Self::instance();
11241
0
        // vkDestroyEvent
11242
0
        let device_info = global.get_device_info(device).unwrap();
11243
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11244
0
        let layer_result = device_info
11245
0
            .customized_info
11246
0
            .borrow()
11247
0
            .hooks()
11248
0
            .destroy_event(event, unsafe { p_allocator.as_ref() });
11249
0
        match layer_result {
11250
0
            LayerResult::Handled(res) => res,
11251
            LayerResult::Unhandled => unsafe {
11252
0
                (dispatch_table.destroy_event)(device, event, p_allocator)
11253
            },
11254
        }
11255
0
    }
11256
0
    extern "system" fn get_event_status(device: vk::Device, event: vk::Event) -> vk::Result {
11257
0
        let global = Self::instance();
11258
0
        // vkGetEventStatus
11259
0
        let device_info = global.get_device_info(device).unwrap();
11260
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11261
0
        let layer_result = device_info
11262
0
            .customized_info
11263
0
            .borrow()
11264
0
            .hooks()
11265
0
            .get_event_status(event);
11266
0
        match layer_result {
11267
0
            LayerResult::Handled(res) => match res {
11268
0
                Ok(()) => vk::Result::SUCCESS,
11269
0
                Err(e) => e,
11270
            },
11271
0
            LayerResult::Unhandled => unsafe { (dispatch_table.get_event_status)(device, event) },
11272
        }
11273
0
    }
11274
0
    extern "system" fn set_event(device: vk::Device, event: vk::Event) -> vk::Result {
11275
0
        let global = Self::instance();
11276
0
        // vkSetEvent
11277
0
        let device_info = global.get_device_info(device).unwrap();
11278
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11279
0
        let layer_result = device_info
11280
0
            .customized_info
11281
0
            .borrow()
11282
0
            .hooks()
11283
0
            .set_event(event);
11284
0
        match layer_result {
11285
0
            LayerResult::Handled(res) => match res {
11286
0
                Ok(()) => vk::Result::SUCCESS,
11287
0
                Err(e) => e,
11288
            },
11289
0
            LayerResult::Unhandled => unsafe { (dispatch_table.set_event)(device, event) },
11290
        }
11291
0
    }
11292
0
    extern "system" fn reset_event(device: vk::Device, event: vk::Event) -> vk::Result {
11293
0
        let global = Self::instance();
11294
0
        // vkResetEvent
11295
0
        let device_info = global.get_device_info(device).unwrap();
11296
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11297
0
        let layer_result = device_info
11298
0
            .customized_info
11299
0
            .borrow()
11300
0
            .hooks()
11301
0
            .reset_event(event);
11302
0
        match layer_result {
11303
0
            LayerResult::Handled(res) => match res {
11304
0
                Ok(()) => vk::Result::SUCCESS,
11305
0
                Err(e) => e,
11306
            },
11307
0
            LayerResult::Unhandled => unsafe { (dispatch_table.reset_event)(device, event) },
11308
        }
11309
0
    }
11310
0
    extern "system" fn create_query_pool(
11311
0
        device: vk::Device,
11312
0
        p_create_info: *const vk::QueryPoolCreateInfo,
11313
0
        p_allocator: *const vk::AllocationCallbacks,
11314
0
        p_query_pool: *mut vk::QueryPool,
11315
0
    ) -> vk::Result {
11316
0
        let global = Self::instance();
11317
0
        // vkCreateQueryPool
11318
0
        let device_info = global.get_device_info(device).unwrap();
11319
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11320
0
        let layer_result = device_info
11321
0
            .customized_info
11322
0
            .borrow()
11323
0
            .hooks()
11324
0
            .create_query_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11325
0
                p_allocator.as_ref()
11326
0
            });
11327
0
        match layer_result {
11328
0
            LayerResult::Handled(res) => match res {
11329
0
                Ok(res) => {
11330
0
                    *unsafe { p_query_pool.as_mut() }.unwrap() = res;
11331
0
                    vk::Result::SUCCESS
11332
                }
11333
0
                Err(e) => e,
11334
            },
11335
            LayerResult::Unhandled => unsafe {
11336
0
                (dispatch_table.create_query_pool)(device, p_create_info, p_allocator, p_query_pool)
11337
            },
11338
        }
11339
0
    }
11340
0
    extern "system" fn destroy_query_pool(
11341
0
        device: vk::Device,
11342
0
        query_pool: vk::QueryPool,
11343
0
        p_allocator: *const vk::AllocationCallbacks,
11344
0
    ) {
11345
0
        let global = Self::instance();
11346
0
        // vkDestroyQueryPool
11347
0
        let device_info = global.get_device_info(device).unwrap();
11348
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11349
0
        let layer_result = device_info
11350
0
            .customized_info
11351
0
            .borrow()
11352
0
            .hooks()
11353
0
            .destroy_query_pool(query_pool, unsafe { p_allocator.as_ref() });
11354
0
        match layer_result {
11355
0
            LayerResult::Handled(res) => res,
11356
            LayerResult::Unhandled => unsafe {
11357
0
                (dispatch_table.destroy_query_pool)(device, query_pool, p_allocator)
11358
            },
11359
        }
11360
0
    }
11361
0
    extern "system" fn get_query_pool_results(
11362
0
        device: vk::Device,
11363
0
        query_pool: vk::QueryPool,
11364
0
        first_query: u32,
11365
0
        query_count: u32,
11366
0
        data_size: usize,
11367
0
        p_data: *mut c_void,
11368
0
        stride: vk::DeviceSize,
11369
0
        flags: vk::QueryResultFlags,
11370
0
    ) -> vk::Result {
11371
0
        let global = Self::instance();
11372
0
        // vkGetQueryPoolResults
11373
0
        let device_info = global.get_device_info(device).unwrap();
11374
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11375
0
        let layer_result = device_info
11376
0
            .customized_info
11377
0
            .borrow()
11378
0
            .hooks()
11379
0
            .get_query_pool_results(
11380
0
                query_pool,
11381
0
                first_query,
11382
0
                query_count,
11383
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
11384
0
                stride,
11385
0
                flags,
11386
0
            );
11387
0
        match layer_result {
11388
0
            LayerResult::Handled(res) => match res {
11389
0
                Ok(()) => vk::Result::SUCCESS,
11390
0
                Err(e) => e,
11391
            },
11392
            LayerResult::Unhandled => unsafe {
11393
0
                (dispatch_table.get_query_pool_results)(
11394
0
                    device,
11395
0
                    query_pool,
11396
0
                    first_query,
11397
0
                    query_count,
11398
0
                    data_size,
11399
0
                    p_data,
11400
0
                    stride,
11401
0
                    flags,
11402
0
                )
11403
            },
11404
        }
11405
0
    }
11406
0
    extern "system" fn create_buffer(
11407
0
        device: vk::Device,
11408
0
        p_create_info: *const vk::BufferCreateInfo,
11409
0
        p_allocator: *const vk::AllocationCallbacks,
11410
0
        p_buffer: *mut vk::Buffer,
11411
0
    ) -> vk::Result {
11412
0
        let global = Self::instance();
11413
0
        // vkCreateBuffer
11414
0
        let device_info = global.get_device_info(device).unwrap();
11415
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11416
0
        let layer_result = device_info
11417
0
            .customized_info
11418
0
            .borrow()
11419
0
            .hooks()
11420
0
            .create_buffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11421
0
                p_allocator.as_ref()
11422
0
            });
11423
0
        match layer_result {
11424
0
            LayerResult::Handled(res) => match res {
11425
0
                Ok(res) => {
11426
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
11427
0
                    vk::Result::SUCCESS
11428
                }
11429
0
                Err(e) => e,
11430
            },
11431
            LayerResult::Unhandled => unsafe {
11432
0
                (dispatch_table.create_buffer)(device, p_create_info, p_allocator, p_buffer)
11433
            },
11434
        }
11435
0
    }
11436
0
    extern "system" fn destroy_buffer(
11437
0
        device: vk::Device,
11438
0
        buffer: vk::Buffer,
11439
0
        p_allocator: *const vk::AllocationCallbacks,
11440
0
    ) {
11441
0
        let global = Self::instance();
11442
0
        // vkDestroyBuffer
11443
0
        let device_info = global.get_device_info(device).unwrap();
11444
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11445
0
        let layer_result = device_info
11446
0
            .customized_info
11447
0
            .borrow()
11448
0
            .hooks()
11449
0
            .destroy_buffer(buffer, unsafe { p_allocator.as_ref() });
11450
0
        match layer_result {
11451
0
            LayerResult::Handled(res) => res,
11452
            LayerResult::Unhandled => unsafe {
11453
0
                (dispatch_table.destroy_buffer)(device, buffer, p_allocator)
11454
            },
11455
        }
11456
0
    }
11457
0
    extern "system" fn create_buffer_view(
11458
0
        device: vk::Device,
11459
0
        p_create_info: *const vk::BufferViewCreateInfo,
11460
0
        p_allocator: *const vk::AllocationCallbacks,
11461
0
        p_view: *mut vk::BufferView,
11462
0
    ) -> vk::Result {
11463
0
        let global = Self::instance();
11464
0
        // vkCreateBufferView
11465
0
        let device_info = global.get_device_info(device).unwrap();
11466
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11467
0
        let layer_result = device_info
11468
0
            .customized_info
11469
0
            .borrow()
11470
0
            .hooks()
11471
0
            .create_buffer_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11472
0
                p_allocator.as_ref()
11473
0
            });
11474
0
        match layer_result {
11475
0
            LayerResult::Handled(res) => match res {
11476
0
                Ok(res) => {
11477
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11478
0
                    vk::Result::SUCCESS
11479
                }
11480
0
                Err(e) => e,
11481
            },
11482
            LayerResult::Unhandled => unsafe {
11483
0
                (dispatch_table.create_buffer_view)(device, p_create_info, p_allocator, p_view)
11484
            },
11485
        }
11486
0
    }
11487
0
    extern "system" fn destroy_buffer_view(
11488
0
        device: vk::Device,
11489
0
        buffer_view: vk::BufferView,
11490
0
        p_allocator: *const vk::AllocationCallbacks,
11491
0
    ) {
11492
0
        let global = Self::instance();
11493
0
        // vkDestroyBufferView
11494
0
        let device_info = global.get_device_info(device).unwrap();
11495
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11496
0
        let layer_result = device_info
11497
0
            .customized_info
11498
0
            .borrow()
11499
0
            .hooks()
11500
0
            .destroy_buffer_view(buffer_view, unsafe { p_allocator.as_ref() });
11501
0
        match layer_result {
11502
0
            LayerResult::Handled(res) => res,
11503
            LayerResult::Unhandled => unsafe {
11504
0
                (dispatch_table.destroy_buffer_view)(device, buffer_view, p_allocator)
11505
            },
11506
        }
11507
0
    }
11508
0
    extern "system" fn create_image(
11509
0
        device: vk::Device,
11510
0
        p_create_info: *const vk::ImageCreateInfo,
11511
0
        p_allocator: *const vk::AllocationCallbacks,
11512
0
        p_image: *mut vk::Image,
11513
0
    ) -> vk::Result {
11514
0
        let global = Self::instance();
11515
0
        // vkCreateImage
11516
0
        let device_info = global.get_device_info(device).unwrap();
11517
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11518
0
        let layer_result = device_info
11519
0
            .customized_info
11520
0
            .borrow()
11521
0
            .hooks()
11522
0
            .create_image(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11523
0
                p_allocator.as_ref()
11524
0
            });
11525
0
        match layer_result {
11526
0
            LayerResult::Handled(res) => match res {
11527
0
                Ok(res) => {
11528
0
                    *unsafe { p_image.as_mut() }.unwrap() = res;
11529
0
                    vk::Result::SUCCESS
11530
                }
11531
0
                Err(e) => e,
11532
            },
11533
            LayerResult::Unhandled => unsafe {
11534
0
                (dispatch_table.create_image)(device, p_create_info, p_allocator, p_image)
11535
            },
11536
        }
11537
0
    }
11538
1
    extern "system" fn destroy_image(
11539
1
        device: vk::Device,
11540
1
        image: vk::Image,
11541
1
        p_allocator: *const vk::AllocationCallbacks,
11542
1
    ) {
11543
1
        let global = Self::instance();
11544
1
        // vkDestroyImage
11545
1
        let device_info = global.get_device_info(device).unwrap();
11546
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11547
1
        let layer_result = device_info
11548
1
            .customized_info
11549
1
            .borrow()
11550
1
            .hooks()
11551
1
            .destroy_image(image, unsafe { p_allocator.as_ref() });
11552
1
        match layer_result {
11553
0
            LayerResult::Handled(res) => res,
11554
            LayerResult::Unhandled => unsafe {
11555
1
                (dispatch_table.destroy_image)(device, image, p_allocator)
11556
            },
11557
        }
11558
1
    }
11559
0
    extern "system" fn get_image_subresource_layout(
11560
0
        device: vk::Device,
11561
0
        image: vk::Image,
11562
0
        p_subresource: *const vk::ImageSubresource,
11563
0
        p_layout: *mut vk::SubresourceLayout,
11564
0
    ) {
11565
0
        let global = Self::instance();
11566
0
        // vkGetImageSubresourceLayout
11567
0
        let device_info = global.get_device_info(device).unwrap();
11568
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11569
0
        let layer_result = device_info
11570
0
            .customized_info
11571
0
            .borrow()
11572
0
            .hooks()
11573
0
            .get_image_subresource_layout(
11574
0
                image,
11575
0
                unsafe { p_subresource.as_ref() }.unwrap(),
11576
0
                unsafe { ptr_as_uninit_mut(p_layout) }.unwrap(),
11577
0
            );
11578
0
        match layer_result {
11579
0
            LayerResult::Handled(res) => res,
11580
            LayerResult::Unhandled => unsafe {
11581
0
                (dispatch_table.get_image_subresource_layout)(
11582
0
                    device,
11583
0
                    image,
11584
0
                    p_subresource,
11585
0
                    p_layout,
11586
0
                )
11587
            },
11588
        }
11589
0
    }
11590
0
    extern "system" fn create_image_view(
11591
0
        device: vk::Device,
11592
0
        p_create_info: *const vk::ImageViewCreateInfo,
11593
0
        p_allocator: *const vk::AllocationCallbacks,
11594
0
        p_view: *mut vk::ImageView,
11595
0
    ) -> vk::Result {
11596
0
        let global = Self::instance();
11597
0
        // vkCreateImageView
11598
0
        let device_info = global.get_device_info(device).unwrap();
11599
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11600
0
        let layer_result = device_info
11601
0
            .customized_info
11602
0
            .borrow()
11603
0
            .hooks()
11604
0
            .create_image_view(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11605
0
                p_allocator.as_ref()
11606
0
            });
11607
0
        match layer_result {
11608
0
            LayerResult::Handled(res) => match res {
11609
0
                Ok(res) => {
11610
0
                    *unsafe { p_view.as_mut() }.unwrap() = res;
11611
0
                    vk::Result::SUCCESS
11612
                }
11613
0
                Err(e) => e,
11614
            },
11615
            LayerResult::Unhandled => unsafe {
11616
0
                (dispatch_table.create_image_view)(device, p_create_info, p_allocator, p_view)
11617
            },
11618
        }
11619
0
    }
11620
0
    extern "system" fn destroy_image_view(
11621
0
        device: vk::Device,
11622
0
        image_view: vk::ImageView,
11623
0
        p_allocator: *const vk::AllocationCallbacks,
11624
0
    ) {
11625
0
        let global = Self::instance();
11626
0
        // vkDestroyImageView
11627
0
        let device_info = global.get_device_info(device).unwrap();
11628
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11629
0
        let layer_result = device_info
11630
0
            .customized_info
11631
0
            .borrow()
11632
0
            .hooks()
11633
0
            .destroy_image_view(image_view, unsafe { p_allocator.as_ref() });
11634
0
        match layer_result {
11635
0
            LayerResult::Handled(res) => res,
11636
            LayerResult::Unhandled => unsafe {
11637
0
                (dispatch_table.destroy_image_view)(device, image_view, p_allocator)
11638
            },
11639
        }
11640
0
    }
11641
0
    extern "system" fn create_shader_module(
11642
0
        device: vk::Device,
11643
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
11644
0
        p_allocator: *const vk::AllocationCallbacks,
11645
0
        p_shader_module: *mut vk::ShaderModule,
11646
0
    ) -> vk::Result {
11647
0
        let global = Self::instance();
11648
0
        // vkCreateShaderModule
11649
0
        let device_info = global.get_device_info(device).unwrap();
11650
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11651
0
        let layer_result = device_info
11652
0
            .customized_info
11653
0
            .borrow()
11654
0
            .hooks()
11655
0
            .create_shader_module(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11656
0
                p_allocator.as_ref()
11657
0
            });
11658
0
        match layer_result {
11659
0
            LayerResult::Handled(res) => match res {
11660
0
                Ok(res) => {
11661
0
                    *unsafe { p_shader_module.as_mut() }.unwrap() = res;
11662
0
                    vk::Result::SUCCESS
11663
                }
11664
0
                Err(e) => e,
11665
            },
11666
            LayerResult::Unhandled => unsafe {
11667
0
                (dispatch_table.create_shader_module)(
11668
0
                    device,
11669
0
                    p_create_info,
11670
0
                    p_allocator,
11671
0
                    p_shader_module,
11672
0
                )
11673
            },
11674
        }
11675
0
    }
11676
0
    extern "system" fn destroy_shader_module(
11677
0
        device: vk::Device,
11678
0
        shader_module: vk::ShaderModule,
11679
0
        p_allocator: *const vk::AllocationCallbacks,
11680
0
    ) {
11681
0
        let global = Self::instance();
11682
0
        // vkDestroyShaderModule
11683
0
        let device_info = global.get_device_info(device).unwrap();
11684
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11685
0
        let layer_result = device_info
11686
0
            .customized_info
11687
0
            .borrow()
11688
0
            .hooks()
11689
0
            .destroy_shader_module(shader_module, unsafe { p_allocator.as_ref() });
11690
0
        match layer_result {
11691
0
            LayerResult::Handled(res) => res,
11692
            LayerResult::Unhandled => unsafe {
11693
0
                (dispatch_table.destroy_shader_module)(device, shader_module, p_allocator)
11694
            },
11695
        }
11696
0
    }
11697
0
    extern "system" fn create_pipeline_cache(
11698
0
        device: vk::Device,
11699
0
        p_create_info: *const vk::PipelineCacheCreateInfo,
11700
0
        p_allocator: *const vk::AllocationCallbacks,
11701
0
        p_pipeline_cache: *mut vk::PipelineCache,
11702
0
    ) -> vk::Result {
11703
0
        let global = Self::instance();
11704
0
        // vkCreatePipelineCache
11705
0
        let device_info = global.get_device_info(device).unwrap();
11706
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11707
0
        let layer_result = device_info
11708
0
            .customized_info
11709
0
            .borrow()
11710
0
            .hooks()
11711
0
            .create_pipeline_cache(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11712
0
                p_allocator.as_ref()
11713
0
            });
11714
0
        match layer_result {
11715
0
            LayerResult::Handled(res) => match res {
11716
0
                Ok(res) => {
11717
0
                    *unsafe { p_pipeline_cache.as_mut() }.unwrap() = res;
11718
0
                    vk::Result::SUCCESS
11719
                }
11720
0
                Err(e) => e,
11721
            },
11722
            LayerResult::Unhandled => unsafe {
11723
0
                (dispatch_table.create_pipeline_cache)(
11724
0
                    device,
11725
0
                    p_create_info,
11726
0
                    p_allocator,
11727
0
                    p_pipeline_cache,
11728
0
                )
11729
            },
11730
        }
11731
0
    }
11732
0
    extern "system" fn destroy_pipeline_cache(
11733
0
        device: vk::Device,
11734
0
        pipeline_cache: vk::PipelineCache,
11735
0
        p_allocator: *const vk::AllocationCallbacks,
11736
0
    ) {
11737
0
        let global = Self::instance();
11738
0
        // vkDestroyPipelineCache
11739
0
        let device_info = global.get_device_info(device).unwrap();
11740
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11741
0
        let layer_result = device_info
11742
0
            .customized_info
11743
0
            .borrow()
11744
0
            .hooks()
11745
0
            .destroy_pipeline_cache(pipeline_cache, unsafe { p_allocator.as_ref() });
11746
0
        match layer_result {
11747
0
            LayerResult::Handled(res) => res,
11748
            LayerResult::Unhandled => unsafe {
11749
0
                (dispatch_table.destroy_pipeline_cache)(device, pipeline_cache, p_allocator)
11750
            },
11751
        }
11752
0
    }
11753
0
    extern "system" fn get_pipeline_cache_data(
11754
0
        device: vk::Device,
11755
0
        pipeline_cache: vk::PipelineCache,
11756
0
        p_data_size: *mut usize,
11757
0
        p_data: *mut c_void,
11758
0
    ) -> vk::Result {
11759
0
        let global = Self::instance();
11760
0
        // vkGetPipelineCacheData
11761
0
        let device_info = global.get_device_info(device).unwrap();
11762
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11763
0
        let layer_result = device_info
11764
0
            .customized_info
11765
0
            .borrow()
11766
0
            .hooks()
11767
0
            .get_pipeline_cache_data(
11768
0
                pipeline_cache,
11769
0
                unsafe { ptr_as_uninit_mut(p_data_size) }.unwrap(),
11770
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_data as *mut u8, p_data_size) },
11771
0
            );
11772
0
        match layer_result {
11773
0
            LayerResult::Handled(res) => match res {
11774
0
                Ok(()) => vk::Result::SUCCESS,
11775
0
                Err(e) => e,
11776
            },
11777
            LayerResult::Unhandled => unsafe {
11778
0
                (dispatch_table.get_pipeline_cache_data)(
11779
0
                    device,
11780
0
                    pipeline_cache,
11781
0
                    p_data_size,
11782
0
                    p_data,
11783
0
                )
11784
            },
11785
        }
11786
0
    }
11787
0
    extern "system" fn merge_pipeline_caches(
11788
0
        device: vk::Device,
11789
0
        dst_cache: vk::PipelineCache,
11790
0
        src_cache_count: u32,
11791
0
        p_src_caches: *const vk::PipelineCache,
11792
0
    ) -> vk::Result {
11793
0
        let global = Self::instance();
11794
0
        // vkMergePipelineCaches
11795
0
        let device_info = global.get_device_info(device).unwrap();
11796
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11797
0
        let layer_result = device_info
11798
0
            .customized_info
11799
0
            .borrow()
11800
0
            .hooks()
11801
0
            .merge_pipeline_caches(dst_cache, unsafe {
11802
0
                slice_from_raw_parts(p_src_caches, src_cache_count)
11803
0
            });
11804
0
        match layer_result {
11805
0
            LayerResult::Handled(res) => match res {
11806
0
                Ok(()) => vk::Result::SUCCESS,
11807
0
                Err(e) => e,
11808
            },
11809
            LayerResult::Unhandled => unsafe {
11810
0
                (dispatch_table.merge_pipeline_caches)(
11811
0
                    device,
11812
0
                    dst_cache,
11813
0
                    src_cache_count,
11814
0
                    p_src_caches,
11815
0
                )
11816
            },
11817
        }
11818
0
    }
11819
0
    extern "system" fn create_graphics_pipelines(
11820
0
        device: vk::Device,
11821
0
        pipeline_cache: vk::PipelineCache,
11822
0
        create_info_count: u32,
11823
0
        p_create_infos: *const vk::GraphicsPipelineCreateInfo,
11824
0
        p_allocator: *const vk::AllocationCallbacks,
11825
0
        p_pipelines: *mut vk::Pipeline,
11826
0
    ) -> vk::Result {
11827
0
        let global = Self::instance();
11828
0
        // vkCreateGraphicsPipelines
11829
0
        let device_info = global.get_device_info(device).unwrap();
11830
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11831
0
        let layer_result = device_info
11832
0
            .customized_info
11833
0
            .borrow()
11834
0
            .hooks()
11835
0
            .create_graphics_pipelines(
11836
0
                pipeline_cache,
11837
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
11838
0
                unsafe { p_allocator.as_ref() },
11839
0
            );
11840
0
        match layer_result {
11841
0
            LayerResult::Handled(res) => match res {
11842
0
                Ok(res) => {
11843
0
                    unsafe {
11844
0
                        std::slice::from_raw_parts_mut(
11845
0
                            p_pipelines,
11846
0
                            create_info_count.try_into().unwrap(),
11847
0
                        )
11848
0
                    }
11849
0
                    .copy_from_slice(&res);
11850
0
                    vk::Result::SUCCESS
11851
                }
11852
0
                Err(e) => e,
11853
            },
11854
            LayerResult::Unhandled => unsafe {
11855
0
                (dispatch_table.create_graphics_pipelines)(
11856
0
                    device,
11857
0
                    pipeline_cache,
11858
0
                    create_info_count,
11859
0
                    p_create_infos,
11860
0
                    p_allocator,
11861
0
                    p_pipelines,
11862
0
                )
11863
            },
11864
        }
11865
0
    }
11866
0
    extern "system" fn create_compute_pipelines(
11867
0
        device: vk::Device,
11868
0
        pipeline_cache: vk::PipelineCache,
11869
0
        create_info_count: u32,
11870
0
        p_create_infos: *const vk::ComputePipelineCreateInfo,
11871
0
        p_allocator: *const vk::AllocationCallbacks,
11872
0
        p_pipelines: *mut vk::Pipeline,
11873
0
    ) -> vk::Result {
11874
0
        let global = Self::instance();
11875
0
        // vkCreateComputePipelines
11876
0
        let device_info = global.get_device_info(device).unwrap();
11877
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11878
0
        let layer_result = device_info
11879
0
            .customized_info
11880
0
            .borrow()
11881
0
            .hooks()
11882
0
            .create_compute_pipelines(
11883
0
                pipeline_cache,
11884
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
11885
0
                unsafe { p_allocator.as_ref() },
11886
0
            );
11887
0
        match layer_result {
11888
0
            LayerResult::Handled(res) => match res {
11889
0
                Ok(res) => {
11890
0
                    unsafe {
11891
0
                        std::slice::from_raw_parts_mut(
11892
0
                            p_pipelines,
11893
0
                            create_info_count.try_into().unwrap(),
11894
0
                        )
11895
0
                    }
11896
0
                    .copy_from_slice(&res);
11897
0
                    vk::Result::SUCCESS
11898
                }
11899
0
                Err(e) => e,
11900
            },
11901
            LayerResult::Unhandled => unsafe {
11902
0
                (dispatch_table.create_compute_pipelines)(
11903
0
                    device,
11904
0
                    pipeline_cache,
11905
0
                    create_info_count,
11906
0
                    p_create_infos,
11907
0
                    p_allocator,
11908
0
                    p_pipelines,
11909
0
                )
11910
            },
11911
        }
11912
0
    }
11913
0
    extern "system" fn destroy_pipeline(
11914
0
        device: vk::Device,
11915
0
        pipeline: vk::Pipeline,
11916
0
        p_allocator: *const vk::AllocationCallbacks,
11917
0
    ) {
11918
0
        let global = Self::instance();
11919
0
        // vkDestroyPipeline
11920
0
        let device_info = global.get_device_info(device).unwrap();
11921
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11922
0
        let layer_result = device_info
11923
0
            .customized_info
11924
0
            .borrow()
11925
0
            .hooks()
11926
0
            .destroy_pipeline(pipeline, unsafe { p_allocator.as_ref() });
11927
0
        match layer_result {
11928
0
            LayerResult::Handled(res) => res,
11929
            LayerResult::Unhandled => unsafe {
11930
0
                (dispatch_table.destroy_pipeline)(device, pipeline, p_allocator)
11931
            },
11932
        }
11933
0
    }
11934
0
    extern "system" fn create_pipeline_layout(
11935
0
        device: vk::Device,
11936
0
        p_create_info: *const vk::PipelineLayoutCreateInfo,
11937
0
        p_allocator: *const vk::AllocationCallbacks,
11938
0
        p_pipeline_layout: *mut vk::PipelineLayout,
11939
0
    ) -> vk::Result {
11940
0
        let global = Self::instance();
11941
0
        // vkCreatePipelineLayout
11942
0
        let device_info = global.get_device_info(device).unwrap();
11943
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11944
0
        let layer_result = device_info
11945
0
            .customized_info
11946
0
            .borrow()
11947
0
            .hooks()
11948
0
            .create_pipeline_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
11949
0
                p_allocator.as_ref()
11950
0
            });
11951
0
        match layer_result {
11952
0
            LayerResult::Handled(res) => match res {
11953
0
                Ok(res) => {
11954
0
                    *unsafe { p_pipeline_layout.as_mut() }.unwrap() = res;
11955
0
                    vk::Result::SUCCESS
11956
                }
11957
0
                Err(e) => e,
11958
            },
11959
            LayerResult::Unhandled => unsafe {
11960
0
                (dispatch_table.create_pipeline_layout)(
11961
0
                    device,
11962
0
                    p_create_info,
11963
0
                    p_allocator,
11964
0
                    p_pipeline_layout,
11965
0
                )
11966
            },
11967
        }
11968
0
    }
11969
0
    extern "system" fn destroy_pipeline_layout(
11970
0
        device: vk::Device,
11971
0
        pipeline_layout: vk::PipelineLayout,
11972
0
        p_allocator: *const vk::AllocationCallbacks,
11973
0
    ) {
11974
0
        let global = Self::instance();
11975
0
        // vkDestroyPipelineLayout
11976
0
        let device_info = global.get_device_info(device).unwrap();
11977
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
11978
0
        let layer_result = device_info
11979
0
            .customized_info
11980
0
            .borrow()
11981
0
            .hooks()
11982
0
            .destroy_pipeline_layout(pipeline_layout, unsafe { p_allocator.as_ref() });
11983
0
        match layer_result {
11984
0
            LayerResult::Handled(res) => res,
11985
            LayerResult::Unhandled => unsafe {
11986
0
                (dispatch_table.destroy_pipeline_layout)(device, pipeline_layout, p_allocator)
11987
            },
11988
        }
11989
0
    }
11990
0
    extern "system" fn create_sampler(
11991
0
        device: vk::Device,
11992
0
        p_create_info: *const vk::SamplerCreateInfo,
11993
0
        p_allocator: *const vk::AllocationCallbacks,
11994
0
        p_sampler: *mut vk::Sampler,
11995
0
    ) -> vk::Result {
11996
0
        let global = Self::instance();
11997
0
        // vkCreateSampler
11998
0
        let device_info = global.get_device_info(device).unwrap();
11999
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12000
0
        let layer_result = device_info
12001
0
            .customized_info
12002
0
            .borrow()
12003
0
            .hooks()
12004
0
            .create_sampler(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12005
0
                p_allocator.as_ref()
12006
0
            });
12007
0
        match layer_result {
12008
0
            LayerResult::Handled(res) => match res {
12009
0
                Ok(res) => {
12010
0
                    *unsafe { p_sampler.as_mut() }.unwrap() = res;
12011
0
                    vk::Result::SUCCESS
12012
                }
12013
0
                Err(e) => e,
12014
            },
12015
            LayerResult::Unhandled => unsafe {
12016
0
                (dispatch_table.create_sampler)(device, p_create_info, p_allocator, p_sampler)
12017
            },
12018
        }
12019
0
    }
12020
0
    extern "system" fn destroy_sampler(
12021
0
        device: vk::Device,
12022
0
        sampler: vk::Sampler,
12023
0
        p_allocator: *const vk::AllocationCallbacks,
12024
0
    ) {
12025
0
        let global = Self::instance();
12026
0
        // vkDestroySampler
12027
0
        let device_info = global.get_device_info(device).unwrap();
12028
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12029
0
        let layer_result = device_info
12030
0
            .customized_info
12031
0
            .borrow()
12032
0
            .hooks()
12033
0
            .destroy_sampler(sampler, unsafe { p_allocator.as_ref() });
12034
0
        match layer_result {
12035
0
            LayerResult::Handled(res) => res,
12036
            LayerResult::Unhandled => unsafe {
12037
0
                (dispatch_table.destroy_sampler)(device, sampler, p_allocator)
12038
            },
12039
        }
12040
0
    }
12041
0
    extern "system" fn create_descriptor_set_layout(
12042
0
        device: vk::Device,
12043
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
12044
0
        p_allocator: *const vk::AllocationCallbacks,
12045
0
        p_set_layout: *mut vk::DescriptorSetLayout,
12046
0
    ) -> vk::Result {
12047
0
        let global = Self::instance();
12048
0
        // vkCreateDescriptorSetLayout
12049
0
        let device_info = global.get_device_info(device).unwrap();
12050
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12051
0
        let layer_result = device_info
12052
0
            .customized_info
12053
0
            .borrow()
12054
0
            .hooks()
12055
0
            .create_descriptor_set_layout(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12056
0
                p_allocator.as_ref()
12057
0
            });
12058
0
        match layer_result {
12059
0
            LayerResult::Handled(res) => match res {
12060
0
                Ok(res) => {
12061
0
                    *unsafe { p_set_layout.as_mut() }.unwrap() = res;
12062
0
                    vk::Result::SUCCESS
12063
                }
12064
0
                Err(e) => e,
12065
            },
12066
            LayerResult::Unhandled => unsafe {
12067
0
                (dispatch_table.create_descriptor_set_layout)(
12068
0
                    device,
12069
0
                    p_create_info,
12070
0
                    p_allocator,
12071
0
                    p_set_layout,
12072
0
                )
12073
            },
12074
        }
12075
0
    }
12076
0
    extern "system" fn destroy_descriptor_set_layout(
12077
0
        device: vk::Device,
12078
0
        descriptor_set_layout: vk::DescriptorSetLayout,
12079
0
        p_allocator: *const vk::AllocationCallbacks,
12080
0
    ) {
12081
0
        let global = Self::instance();
12082
0
        // vkDestroyDescriptorSetLayout
12083
0
        let device_info = global.get_device_info(device).unwrap();
12084
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12085
0
        let layer_result = device_info
12086
0
            .customized_info
12087
0
            .borrow()
12088
0
            .hooks()
12089
0
            .destroy_descriptor_set_layout(descriptor_set_layout, unsafe { p_allocator.as_ref() });
12090
0
        match layer_result {
12091
0
            LayerResult::Handled(res) => res,
12092
            LayerResult::Unhandled => unsafe {
12093
0
                (dispatch_table.destroy_descriptor_set_layout)(
12094
0
                    device,
12095
0
                    descriptor_set_layout,
12096
0
                    p_allocator,
12097
0
                )
12098
            },
12099
        }
12100
0
    }
12101
0
    extern "system" fn create_descriptor_pool(
12102
0
        device: vk::Device,
12103
0
        p_create_info: *const vk::DescriptorPoolCreateInfo,
12104
0
        p_allocator: *const vk::AllocationCallbacks,
12105
0
        p_descriptor_pool: *mut vk::DescriptorPool,
12106
0
    ) -> vk::Result {
12107
0
        let global = Self::instance();
12108
0
        // vkCreateDescriptorPool
12109
0
        let device_info = global.get_device_info(device).unwrap();
12110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12111
0
        let layer_result = device_info
12112
0
            .customized_info
12113
0
            .borrow()
12114
0
            .hooks()
12115
0
            .create_descriptor_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12116
0
                p_allocator.as_ref()
12117
0
            });
12118
0
        match layer_result {
12119
0
            LayerResult::Handled(res) => match res {
12120
0
                Ok(res) => {
12121
0
                    *unsafe { p_descriptor_pool.as_mut() }.unwrap() = res;
12122
0
                    vk::Result::SUCCESS
12123
                }
12124
0
                Err(e) => e,
12125
            },
12126
            LayerResult::Unhandled => unsafe {
12127
0
                (dispatch_table.create_descriptor_pool)(
12128
0
                    device,
12129
0
                    p_create_info,
12130
0
                    p_allocator,
12131
0
                    p_descriptor_pool,
12132
0
                )
12133
            },
12134
        }
12135
0
    }
12136
0
    extern "system" fn destroy_descriptor_pool(
12137
0
        device: vk::Device,
12138
0
        descriptor_pool: vk::DescriptorPool,
12139
0
        p_allocator: *const vk::AllocationCallbacks,
12140
0
    ) {
12141
0
        let global = Self::instance();
12142
0
        // vkDestroyDescriptorPool
12143
0
        let device_info = global.get_device_info(device).unwrap();
12144
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12145
0
        let layer_result = device_info
12146
0
            .customized_info
12147
0
            .borrow()
12148
0
            .hooks()
12149
0
            .destroy_descriptor_pool(descriptor_pool, unsafe { p_allocator.as_ref() });
12150
0
        match layer_result {
12151
0
            LayerResult::Handled(res) => res,
12152
            LayerResult::Unhandled => unsafe {
12153
0
                (dispatch_table.destroy_descriptor_pool)(device, descriptor_pool, p_allocator)
12154
            },
12155
        }
12156
0
    }
12157
0
    extern "system" fn reset_descriptor_pool(
12158
0
        device: vk::Device,
12159
0
        descriptor_pool: vk::DescriptorPool,
12160
0
        flags: vk::DescriptorPoolResetFlags,
12161
0
    ) -> vk::Result {
12162
0
        let global = Self::instance();
12163
0
        // vkResetDescriptorPool
12164
0
        let device_info = global.get_device_info(device).unwrap();
12165
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12166
0
        let layer_result = device_info
12167
0
            .customized_info
12168
0
            .borrow()
12169
0
            .hooks()
12170
0
            .reset_descriptor_pool(descriptor_pool, flags);
12171
0
        match layer_result {
12172
0
            LayerResult::Handled(res) => match res {
12173
0
                Ok(()) => vk::Result::SUCCESS,
12174
0
                Err(e) => e,
12175
            },
12176
            LayerResult::Unhandled => unsafe {
12177
0
                (dispatch_table.reset_descriptor_pool)(device, descriptor_pool, flags)
12178
            },
12179
        }
12180
0
    }
12181
0
    extern "system" fn allocate_descriptor_sets(
12182
0
        device: vk::Device,
12183
0
        p_allocate_info: *const vk::DescriptorSetAllocateInfo,
12184
0
        p_descriptor_sets: *mut vk::DescriptorSet,
12185
0
    ) -> vk::Result {
12186
0
        let global = Self::instance();
12187
0
        // vkAllocateDescriptorSets
12188
0
        let device_info = global.get_device_info(device).unwrap();
12189
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12190
0
        let layer_result = device_info
12191
0
            .customized_info
12192
0
            .borrow()
12193
0
            .hooks()
12194
0
            .allocate_descriptor_sets(unsafe { p_allocate_info.as_ref() }.unwrap());
12195
0
        match layer_result {
12196
0
            LayerResult::Handled(res) => match res {
12197
0
                Ok(res) => {
12198
0
                    unsafe {
12199
0
                        std::slice::from_raw_parts_mut(
12200
0
                            p_descriptor_sets,
12201
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12202
0
                                .descriptor_set_count
12203
0
                                .try_into()
12204
0
                                .unwrap(),
12205
0
                        )
12206
0
                    }
12207
0
                    .copy_from_slice(&res);
12208
0
                    vk::Result::SUCCESS
12209
                }
12210
0
                Err(e) => e,
12211
            },
12212
            LayerResult::Unhandled => unsafe {
12213
0
                (dispatch_table.allocate_descriptor_sets)(
12214
0
                    device,
12215
0
                    p_allocate_info,
12216
0
                    p_descriptor_sets,
12217
0
                )
12218
            },
12219
        }
12220
0
    }
12221
0
    extern "system" fn free_descriptor_sets(
12222
0
        device: vk::Device,
12223
0
        descriptor_pool: vk::DescriptorPool,
12224
0
        descriptor_set_count: u32,
12225
0
        p_descriptor_sets: *const vk::DescriptorSet,
12226
0
    ) -> vk::Result {
12227
0
        let global = Self::instance();
12228
0
        // vkFreeDescriptorSets
12229
0
        let device_info = global.get_device_info(device).unwrap();
12230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12231
0
        let layer_result = device_info
12232
0
            .customized_info
12233
0
            .borrow()
12234
0
            .hooks()
12235
0
            .free_descriptor_sets(descriptor_pool, unsafe {
12236
0
                slice_from_raw_parts(p_descriptor_sets, descriptor_set_count)
12237
0
            });
12238
0
        match layer_result {
12239
0
            LayerResult::Handled(res) => match res {
12240
0
                Ok(()) => vk::Result::SUCCESS,
12241
0
                Err(e) => e,
12242
            },
12243
            LayerResult::Unhandled => unsafe {
12244
0
                (dispatch_table.free_descriptor_sets)(
12245
0
                    device,
12246
0
                    descriptor_pool,
12247
0
                    descriptor_set_count,
12248
0
                    p_descriptor_sets,
12249
0
                )
12250
            },
12251
        }
12252
0
    }
12253
0
    extern "system" fn update_descriptor_sets(
12254
0
        device: vk::Device,
12255
0
        descriptor_write_count: u32,
12256
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
12257
0
        descriptor_copy_count: u32,
12258
0
        p_descriptor_copies: *const vk::CopyDescriptorSet,
12259
0
    ) {
12260
0
        let global = Self::instance();
12261
0
        // vkUpdateDescriptorSets
12262
0
        let device_info = global.get_device_info(device).unwrap();
12263
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12264
0
        let layer_result = device_info
12265
0
            .customized_info
12266
0
            .borrow()
12267
0
            .hooks()
12268
0
            .update_descriptor_sets(
12269
0
                unsafe { slice_from_raw_parts(p_descriptor_writes, descriptor_write_count) },
12270
0
                unsafe { slice_from_raw_parts(p_descriptor_copies, descriptor_copy_count) },
12271
0
            );
12272
0
        match layer_result {
12273
0
            LayerResult::Handled(res) => res,
12274
            LayerResult::Unhandled => unsafe {
12275
0
                (dispatch_table.update_descriptor_sets)(
12276
0
                    device,
12277
0
                    descriptor_write_count,
12278
0
                    p_descriptor_writes,
12279
0
                    descriptor_copy_count,
12280
0
                    p_descriptor_copies,
12281
0
                )
12282
            },
12283
        }
12284
0
    }
12285
0
    extern "system" fn create_framebuffer(
12286
0
        device: vk::Device,
12287
0
        p_create_info: *const vk::FramebufferCreateInfo,
12288
0
        p_allocator: *const vk::AllocationCallbacks,
12289
0
        p_framebuffer: *mut vk::Framebuffer,
12290
0
    ) -> vk::Result {
12291
0
        let global = Self::instance();
12292
0
        // vkCreateFramebuffer
12293
0
        let device_info = global.get_device_info(device).unwrap();
12294
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12295
0
        let layer_result = device_info
12296
0
            .customized_info
12297
0
            .borrow()
12298
0
            .hooks()
12299
0
            .create_framebuffer(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12300
0
                p_allocator.as_ref()
12301
0
            });
12302
0
        match layer_result {
12303
0
            LayerResult::Handled(res) => match res {
12304
0
                Ok(res) => {
12305
0
                    *unsafe { p_framebuffer.as_mut() }.unwrap() = res;
12306
0
                    vk::Result::SUCCESS
12307
                }
12308
0
                Err(e) => e,
12309
            },
12310
            LayerResult::Unhandled => unsafe {
12311
0
                (dispatch_table.create_framebuffer)(
12312
0
                    device,
12313
0
                    p_create_info,
12314
0
                    p_allocator,
12315
0
                    p_framebuffer,
12316
0
                )
12317
            },
12318
        }
12319
0
    }
12320
0
    extern "system" fn destroy_framebuffer(
12321
0
        device: vk::Device,
12322
0
        framebuffer: vk::Framebuffer,
12323
0
        p_allocator: *const vk::AllocationCallbacks,
12324
0
    ) {
12325
0
        let global = Self::instance();
12326
0
        // vkDestroyFramebuffer
12327
0
        let device_info = global.get_device_info(device).unwrap();
12328
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12329
0
        let layer_result = device_info
12330
0
            .customized_info
12331
0
            .borrow()
12332
0
            .hooks()
12333
0
            .destroy_framebuffer(framebuffer, unsafe { p_allocator.as_ref() });
12334
0
        match layer_result {
12335
0
            LayerResult::Handled(res) => res,
12336
            LayerResult::Unhandled => unsafe {
12337
0
                (dispatch_table.destroy_framebuffer)(device, framebuffer, p_allocator)
12338
            },
12339
        }
12340
0
    }
12341
0
    extern "system" fn create_render_pass(
12342
0
        device: vk::Device,
12343
0
        p_create_info: *const vk::RenderPassCreateInfo,
12344
0
        p_allocator: *const vk::AllocationCallbacks,
12345
0
        p_render_pass: *mut vk::RenderPass,
12346
0
    ) -> vk::Result {
12347
0
        let global = Self::instance();
12348
0
        // vkCreateRenderPass
12349
0
        let device_info = global.get_device_info(device).unwrap();
12350
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12351
0
        let layer_result = device_info
12352
0
            .customized_info
12353
0
            .borrow()
12354
0
            .hooks()
12355
0
            .create_render_pass(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12356
0
                p_allocator.as_ref()
12357
0
            });
12358
0
        match layer_result {
12359
0
            LayerResult::Handled(res) => match res {
12360
0
                Ok(res) => {
12361
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
12362
0
                    vk::Result::SUCCESS
12363
                }
12364
0
                Err(e) => e,
12365
            },
12366
            LayerResult::Unhandled => unsafe {
12367
0
                (dispatch_table.create_render_pass)(
12368
0
                    device,
12369
0
                    p_create_info,
12370
0
                    p_allocator,
12371
0
                    p_render_pass,
12372
0
                )
12373
            },
12374
        }
12375
0
    }
12376
0
    extern "system" fn destroy_render_pass(
12377
0
        device: vk::Device,
12378
0
        render_pass: vk::RenderPass,
12379
0
        p_allocator: *const vk::AllocationCallbacks,
12380
0
    ) {
12381
0
        let global = Self::instance();
12382
0
        // vkDestroyRenderPass
12383
0
        let device_info = global.get_device_info(device).unwrap();
12384
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12385
0
        let layer_result = device_info
12386
0
            .customized_info
12387
0
            .borrow()
12388
0
            .hooks()
12389
0
            .destroy_render_pass(render_pass, unsafe { p_allocator.as_ref() });
12390
0
        match layer_result {
12391
0
            LayerResult::Handled(res) => res,
12392
            LayerResult::Unhandled => unsafe {
12393
0
                (dispatch_table.destroy_render_pass)(device, render_pass, p_allocator)
12394
            },
12395
        }
12396
0
    }
12397
0
    extern "system" fn get_render_area_granularity(
12398
0
        device: vk::Device,
12399
0
        render_pass: vk::RenderPass,
12400
0
        p_granularity: *mut vk::Extent2D,
12401
0
    ) {
12402
0
        let global = Self::instance();
12403
0
        // vkGetRenderAreaGranularity
12404
0
        let device_info = global.get_device_info(device).unwrap();
12405
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12406
0
        let layer_result = device_info
12407
0
            .customized_info
12408
0
            .borrow()
12409
0
            .hooks()
12410
0
            .get_render_area_granularity(
12411
0
                render_pass,
12412
0
                unsafe { ptr_as_uninit_mut(p_granularity) }.unwrap(),
12413
0
            );
12414
0
        match layer_result {
12415
0
            LayerResult::Handled(res) => res,
12416
            LayerResult::Unhandled => unsafe {
12417
0
                (dispatch_table.get_render_area_granularity)(device, render_pass, p_granularity)
12418
            },
12419
        }
12420
0
    }
12421
0
    extern "system" fn create_command_pool(
12422
0
        device: vk::Device,
12423
0
        p_create_info: *const vk::CommandPoolCreateInfo,
12424
0
        p_allocator: *const vk::AllocationCallbacks,
12425
0
        p_command_pool: *mut vk::CommandPool,
12426
0
    ) -> vk::Result {
12427
0
        let global = Self::instance();
12428
0
        // vkCreateCommandPool
12429
0
        let device_info = global.get_device_info(device).unwrap();
12430
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12431
0
        let layer_result = device_info
12432
0
            .customized_info
12433
0
            .borrow()
12434
0
            .hooks()
12435
0
            .create_command_pool(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
12436
0
                p_allocator.as_ref()
12437
0
            });
12438
0
        match layer_result {
12439
0
            LayerResult::Handled(res) => match res {
12440
0
                Ok(res) => {
12441
0
                    *unsafe { p_command_pool.as_mut() }.unwrap() = res;
12442
0
                    vk::Result::SUCCESS
12443
                }
12444
0
                Err(e) => e,
12445
            },
12446
            LayerResult::Unhandled => unsafe {
12447
0
                (dispatch_table.create_command_pool)(
12448
0
                    device,
12449
0
                    p_create_info,
12450
0
                    p_allocator,
12451
0
                    p_command_pool,
12452
0
                )
12453
            },
12454
        }
12455
0
    }
12456
0
    extern "system" fn destroy_command_pool(
12457
0
        device: vk::Device,
12458
0
        command_pool: vk::CommandPool,
12459
0
        p_allocator: *const vk::AllocationCallbacks,
12460
0
    ) {
12461
0
        let global = Self::instance();
12462
0
        // vkDestroyCommandPool
12463
0
        let device_info = global.get_device_info(device).unwrap();
12464
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12465
0
        let layer_result = device_info
12466
0
            .customized_info
12467
0
            .borrow()
12468
0
            .hooks()
12469
0
            .destroy_command_pool(command_pool, unsafe { p_allocator.as_ref() });
12470
0
        match layer_result {
12471
0
            LayerResult::Handled(res) => res,
12472
            LayerResult::Unhandled => unsafe {
12473
0
                (dispatch_table.destroy_command_pool)(device, command_pool, p_allocator)
12474
            },
12475
        }
12476
0
    }
12477
0
    extern "system" fn reset_command_pool(
12478
0
        device: vk::Device,
12479
0
        command_pool: vk::CommandPool,
12480
0
        flags: vk::CommandPoolResetFlags,
12481
0
    ) -> vk::Result {
12482
0
        let global = Self::instance();
12483
0
        // vkResetCommandPool
12484
0
        let device_info = global.get_device_info(device).unwrap();
12485
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12486
0
        let layer_result = device_info
12487
0
            .customized_info
12488
0
            .borrow()
12489
0
            .hooks()
12490
0
            .reset_command_pool(command_pool, flags);
12491
0
        match layer_result {
12492
0
            LayerResult::Handled(res) => match res {
12493
0
                Ok(()) => vk::Result::SUCCESS,
12494
0
                Err(e) => e,
12495
            },
12496
            LayerResult::Unhandled => unsafe {
12497
0
                (dispatch_table.reset_command_pool)(device, command_pool, flags)
12498
            },
12499
        }
12500
0
    }
12501
0
    extern "system" fn allocate_command_buffers(
12502
0
        device: vk::Device,
12503
0
        p_allocate_info: *const vk::CommandBufferAllocateInfo,
12504
0
        p_command_buffers: *mut vk::CommandBuffer,
12505
0
    ) -> vk::Result {
12506
0
        let global = Self::instance();
12507
0
        // vkAllocateCommandBuffers
12508
0
        let device_info = global.get_device_info(device).unwrap();
12509
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12510
0
        let layer_result = device_info
12511
0
            .customized_info
12512
0
            .borrow()
12513
0
            .hooks()
12514
0
            .allocate_command_buffers(unsafe { p_allocate_info.as_ref() }.unwrap());
12515
0
        match layer_result {
12516
0
            LayerResult::Handled(res) => match res {
12517
0
                Ok(res) => {
12518
0
                    unsafe {
12519
0
                        std::slice::from_raw_parts_mut(
12520
0
                            p_command_buffers,
12521
0
                            unsafe { p_allocate_info.as_ref().unwrap() }
12522
0
                                .command_buffer_count
12523
0
                                .try_into()
12524
0
                                .unwrap(),
12525
0
                        )
12526
0
                    }
12527
0
                    .copy_from_slice(&res);
12528
0
                    vk::Result::SUCCESS
12529
                }
12530
0
                Err(e) => e,
12531
            },
12532
            LayerResult::Unhandled => unsafe {
12533
0
                (dispatch_table.allocate_command_buffers)(
12534
0
                    device,
12535
0
                    p_allocate_info,
12536
0
                    p_command_buffers,
12537
0
                )
12538
            },
12539
        }
12540
0
    }
12541
0
    extern "system" fn free_command_buffers(
12542
0
        device: vk::Device,
12543
0
        command_pool: vk::CommandPool,
12544
0
        command_buffer_count: u32,
12545
0
        p_command_buffers: *const vk::CommandBuffer,
12546
0
    ) {
12547
0
        let global = Self::instance();
12548
0
        // vkFreeCommandBuffers
12549
0
        let device_info = global.get_device_info(device).unwrap();
12550
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12551
0
        let layer_result = device_info
12552
0
            .customized_info
12553
0
            .borrow()
12554
0
            .hooks()
12555
0
            .free_command_buffers(command_pool, unsafe {
12556
0
                slice_from_raw_parts(p_command_buffers, command_buffer_count)
12557
0
            });
12558
0
        match layer_result {
12559
0
            LayerResult::Handled(res) => res,
12560
            LayerResult::Unhandled => unsafe {
12561
0
                (dispatch_table.free_command_buffers)(
12562
0
                    device,
12563
0
                    command_pool,
12564
0
                    command_buffer_count,
12565
0
                    p_command_buffers,
12566
0
                )
12567
            },
12568
        }
12569
0
    }
12570
0
    extern "system" fn begin_command_buffer(
12571
0
        command_buffer: vk::CommandBuffer,
12572
0
        p_begin_info: *const vk::CommandBufferBeginInfo,
12573
0
    ) -> vk::Result {
12574
0
        let global = Self::instance();
12575
0
        // vkBeginCommandBuffer
12576
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12577
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12578
0
        let layer_result = device_info
12579
0
            .customized_info
12580
0
            .borrow()
12581
0
            .hooks()
12582
0
            .begin_command_buffer(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
12583
0
        match layer_result {
12584
0
            LayerResult::Handled(res) => match res {
12585
0
                Ok(()) => vk::Result::SUCCESS,
12586
0
                Err(e) => e,
12587
            },
12588
            LayerResult::Unhandled => unsafe {
12589
0
                (dispatch_table.begin_command_buffer)(command_buffer, p_begin_info)
12590
            },
12591
        }
12592
0
    }
12593
0
    extern "system" fn end_command_buffer(command_buffer: vk::CommandBuffer) -> vk::Result {
12594
0
        let global = Self::instance();
12595
0
        // vkEndCommandBuffer
12596
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12597
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12598
0
        let layer_result = device_info
12599
0
            .customized_info
12600
0
            .borrow()
12601
0
            .hooks()
12602
0
            .end_command_buffer(command_buffer);
12603
0
        match layer_result {
12604
0
            LayerResult::Handled(res) => match res {
12605
0
                Ok(()) => vk::Result::SUCCESS,
12606
0
                Err(e) => e,
12607
            },
12608
            LayerResult::Unhandled => unsafe {
12609
0
                (dispatch_table.end_command_buffer)(command_buffer)
12610
            },
12611
        }
12612
0
    }
12613
0
    extern "system" fn reset_command_buffer(
12614
0
        command_buffer: vk::CommandBuffer,
12615
0
        flags: vk::CommandBufferResetFlags,
12616
0
    ) -> vk::Result {
12617
0
        let global = Self::instance();
12618
0
        // vkResetCommandBuffer
12619
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12620
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12621
0
        let layer_result = device_info
12622
0
            .customized_info
12623
0
            .borrow()
12624
0
            .hooks()
12625
0
            .reset_command_buffer(command_buffer, flags);
12626
0
        match layer_result {
12627
0
            LayerResult::Handled(res) => match res {
12628
0
                Ok(()) => vk::Result::SUCCESS,
12629
0
                Err(e) => e,
12630
            },
12631
            LayerResult::Unhandled => unsafe {
12632
0
                (dispatch_table.reset_command_buffer)(command_buffer, flags)
12633
            },
12634
        }
12635
0
    }
12636
0
    extern "system" fn cmd_bind_pipeline(
12637
0
        command_buffer: vk::CommandBuffer,
12638
0
        pipeline_bind_point: vk::PipelineBindPoint,
12639
0
        pipeline: vk::Pipeline,
12640
0
    ) {
12641
0
        let global = Self::instance();
12642
0
        // vkCmdBindPipeline
12643
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12644
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12645
0
        let layer_result = device_info
12646
0
            .customized_info
12647
0
            .borrow()
12648
0
            .hooks()
12649
0
            .cmd_bind_pipeline(command_buffer, pipeline_bind_point, pipeline);
12650
0
        match layer_result {
12651
0
            LayerResult::Handled(res) => res,
12652
            LayerResult::Unhandled => unsafe {
12653
0
                (dispatch_table.cmd_bind_pipeline)(command_buffer, pipeline_bind_point, pipeline)
12654
            },
12655
        }
12656
0
    }
12657
0
    extern "system" fn cmd_set_viewport(
12658
0
        command_buffer: vk::CommandBuffer,
12659
0
        first_viewport: u32,
12660
0
        viewport_count: u32,
12661
0
        p_viewports: *const vk::Viewport,
12662
0
    ) {
12663
0
        let global = Self::instance();
12664
0
        // vkCmdSetViewport
12665
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12666
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12667
0
        let layer_result = device_info
12668
0
            .customized_info
12669
0
            .borrow()
12670
0
            .hooks()
12671
0
            .cmd_set_viewport(command_buffer, first_viewport, unsafe {
12672
0
                slice_from_raw_parts(p_viewports, viewport_count)
12673
0
            });
12674
0
        match layer_result {
12675
0
            LayerResult::Handled(res) => res,
12676
            LayerResult::Unhandled => unsafe {
12677
0
                (dispatch_table.cmd_set_viewport)(
12678
0
                    command_buffer,
12679
0
                    first_viewport,
12680
0
                    viewport_count,
12681
0
                    p_viewports,
12682
0
                )
12683
            },
12684
        }
12685
0
    }
12686
0
    extern "system" fn cmd_set_scissor(
12687
0
        command_buffer: vk::CommandBuffer,
12688
0
        first_scissor: u32,
12689
0
        scissor_count: u32,
12690
0
        p_scissors: *const vk::Rect2D,
12691
0
    ) {
12692
0
        let global = Self::instance();
12693
0
        // vkCmdSetScissor
12694
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12695
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12696
0
        let layer_result = device_info
12697
0
            .customized_info
12698
0
            .borrow()
12699
0
            .hooks()
12700
0
            .cmd_set_scissor(command_buffer, first_scissor, unsafe {
12701
0
                slice_from_raw_parts(p_scissors, scissor_count)
12702
0
            });
12703
0
        match layer_result {
12704
0
            LayerResult::Handled(res) => res,
12705
            LayerResult::Unhandled => unsafe {
12706
0
                (dispatch_table.cmd_set_scissor)(
12707
0
                    command_buffer,
12708
0
                    first_scissor,
12709
0
                    scissor_count,
12710
0
                    p_scissors,
12711
0
                )
12712
            },
12713
        }
12714
0
    }
12715
0
    extern "system" fn cmd_set_line_width(command_buffer: vk::CommandBuffer, line_width: f32) {
12716
0
        let global = Self::instance();
12717
0
        // vkCmdSetLineWidth
12718
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12719
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12720
0
        let layer_result = device_info
12721
0
            .customized_info
12722
0
            .borrow()
12723
0
            .hooks()
12724
0
            .cmd_set_line_width(command_buffer, line_width);
12725
0
        match layer_result {
12726
0
            LayerResult::Handled(res) => res,
12727
            LayerResult::Unhandled => unsafe {
12728
0
                (dispatch_table.cmd_set_line_width)(command_buffer, line_width)
12729
            },
12730
        }
12731
0
    }
12732
0
    extern "system" fn cmd_set_depth_bias(
12733
0
        command_buffer: vk::CommandBuffer,
12734
0
        depth_bias_constant_factor: f32,
12735
0
        depth_bias_clamp: f32,
12736
0
        depth_bias_slope_factor: f32,
12737
0
    ) {
12738
0
        let global = Self::instance();
12739
0
        // vkCmdSetDepthBias
12740
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12741
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12742
0
        let layer_result = device_info
12743
0
            .customized_info
12744
0
            .borrow()
12745
0
            .hooks()
12746
0
            .cmd_set_depth_bias(
12747
0
                command_buffer,
12748
0
                depth_bias_constant_factor,
12749
0
                depth_bias_clamp,
12750
0
                depth_bias_slope_factor,
12751
0
            );
12752
0
        match layer_result {
12753
0
            LayerResult::Handled(res) => res,
12754
            LayerResult::Unhandled => unsafe {
12755
0
                (dispatch_table.cmd_set_depth_bias)(
12756
0
                    command_buffer,
12757
0
                    depth_bias_constant_factor,
12758
0
                    depth_bias_clamp,
12759
0
                    depth_bias_slope_factor,
12760
0
                )
12761
            },
12762
        }
12763
0
    }
12764
0
    extern "system" fn cmd_set_blend_constants(
12765
0
        command_buffer: vk::CommandBuffer,
12766
0
        blend_constants: *const [f32; 4],
12767
0
    ) {
12768
0
        let global = Self::instance();
12769
0
        // vkCmdSetBlendConstants
12770
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12771
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12772
0
        let layer_result = device_info
12773
0
            .customized_info
12774
0
            .borrow()
12775
0
            .hooks()
12776
0
            .cmd_set_blend_constants(command_buffer, unsafe { blend_constants.as_ref() }.unwrap());
12777
0
        match layer_result {
12778
0
            LayerResult::Handled(res) => res,
12779
            LayerResult::Unhandled => unsafe {
12780
0
                (dispatch_table.cmd_set_blend_constants)(command_buffer, blend_constants)
12781
            },
12782
        }
12783
0
    }
12784
0
    extern "system" fn cmd_set_depth_bounds(
12785
0
        command_buffer: vk::CommandBuffer,
12786
0
        min_depth_bounds: f32,
12787
0
        max_depth_bounds: f32,
12788
0
    ) {
12789
0
        let global = Self::instance();
12790
0
        // vkCmdSetDepthBounds
12791
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12792
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12793
0
        let layer_result = device_info
12794
0
            .customized_info
12795
0
            .borrow()
12796
0
            .hooks()
12797
0
            .cmd_set_depth_bounds(command_buffer, min_depth_bounds, max_depth_bounds);
12798
0
        match layer_result {
12799
0
            LayerResult::Handled(res) => res,
12800
            LayerResult::Unhandled => unsafe {
12801
0
                (dispatch_table.cmd_set_depth_bounds)(
12802
0
                    command_buffer,
12803
0
                    min_depth_bounds,
12804
0
                    max_depth_bounds,
12805
0
                )
12806
            },
12807
        }
12808
0
    }
12809
0
    extern "system" fn cmd_set_stencil_compare_mask(
12810
0
        command_buffer: vk::CommandBuffer,
12811
0
        face_mask: vk::StencilFaceFlags,
12812
0
        compare_mask: u32,
12813
0
    ) {
12814
0
        let global = Self::instance();
12815
0
        // vkCmdSetStencilCompareMask
12816
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12817
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12818
0
        let layer_result = device_info
12819
0
            .customized_info
12820
0
            .borrow()
12821
0
            .hooks()
12822
0
            .cmd_set_stencil_compare_mask(command_buffer, face_mask, compare_mask);
12823
0
        match layer_result {
12824
0
            LayerResult::Handled(res) => res,
12825
            LayerResult::Unhandled => unsafe {
12826
0
                (dispatch_table.cmd_set_stencil_compare_mask)(
12827
0
                    command_buffer,
12828
0
                    face_mask,
12829
0
                    compare_mask,
12830
0
                )
12831
            },
12832
        }
12833
0
    }
12834
0
    extern "system" fn cmd_set_stencil_write_mask(
12835
0
        command_buffer: vk::CommandBuffer,
12836
0
        face_mask: vk::StencilFaceFlags,
12837
0
        write_mask: u32,
12838
0
    ) {
12839
0
        let global = Self::instance();
12840
0
        // vkCmdSetStencilWriteMask
12841
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12842
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12843
0
        let layer_result = device_info
12844
0
            .customized_info
12845
0
            .borrow()
12846
0
            .hooks()
12847
0
            .cmd_set_stencil_write_mask(command_buffer, face_mask, write_mask);
12848
0
        match layer_result {
12849
0
            LayerResult::Handled(res) => res,
12850
            LayerResult::Unhandled => unsafe {
12851
0
                (dispatch_table.cmd_set_stencil_write_mask)(command_buffer, face_mask, write_mask)
12852
            },
12853
        }
12854
0
    }
12855
0
    extern "system" fn cmd_set_stencil_reference(
12856
0
        command_buffer: vk::CommandBuffer,
12857
0
        face_mask: vk::StencilFaceFlags,
12858
0
        reference: u32,
12859
0
    ) {
12860
0
        let global = Self::instance();
12861
0
        // vkCmdSetStencilReference
12862
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12863
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12864
0
        let layer_result = device_info
12865
0
            .customized_info
12866
0
            .borrow()
12867
0
            .hooks()
12868
0
            .cmd_set_stencil_reference(command_buffer, face_mask, reference);
12869
0
        match layer_result {
12870
0
            LayerResult::Handled(res) => res,
12871
            LayerResult::Unhandled => unsafe {
12872
0
                (dispatch_table.cmd_set_stencil_reference)(command_buffer, face_mask, reference)
12873
            },
12874
        }
12875
0
    }
12876
0
    extern "system" fn cmd_bind_descriptor_sets(
12877
0
        command_buffer: vk::CommandBuffer,
12878
0
        pipeline_bind_point: vk::PipelineBindPoint,
12879
0
        layout: vk::PipelineLayout,
12880
0
        first_set: u32,
12881
0
        descriptor_set_count: u32,
12882
0
        p_descriptor_sets: *const vk::DescriptorSet,
12883
0
        dynamic_offset_count: u32,
12884
0
        p_dynamic_offsets: *const u32,
12885
0
    ) {
12886
0
        let global = Self::instance();
12887
0
        // vkCmdBindDescriptorSets
12888
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12889
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12890
0
        let layer_result = device_info
12891
0
            .customized_info
12892
0
            .borrow()
12893
0
            .hooks()
12894
0
            .cmd_bind_descriptor_sets(
12895
0
                command_buffer,
12896
0
                pipeline_bind_point,
12897
0
                layout,
12898
0
                first_set,
12899
0
                unsafe { slice_from_raw_parts(p_descriptor_sets, descriptor_set_count) },
12900
0
                unsafe { slice_from_raw_parts(p_dynamic_offsets, dynamic_offset_count) },
12901
0
            );
12902
0
        match layer_result {
12903
0
            LayerResult::Handled(res) => res,
12904
            LayerResult::Unhandled => unsafe {
12905
0
                (dispatch_table.cmd_bind_descriptor_sets)(
12906
0
                    command_buffer,
12907
0
                    pipeline_bind_point,
12908
0
                    layout,
12909
0
                    first_set,
12910
0
                    descriptor_set_count,
12911
0
                    p_descriptor_sets,
12912
0
                    dynamic_offset_count,
12913
0
                    p_dynamic_offsets,
12914
0
                )
12915
            },
12916
        }
12917
0
    }
12918
0
    extern "system" fn cmd_bind_index_buffer(
12919
0
        command_buffer: vk::CommandBuffer,
12920
0
        buffer: vk::Buffer,
12921
0
        offset: vk::DeviceSize,
12922
0
        index_type: vk::IndexType,
12923
0
    ) {
12924
0
        let global = Self::instance();
12925
0
        // vkCmdBindIndexBuffer
12926
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12927
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12928
0
        let layer_result = device_info
12929
0
            .customized_info
12930
0
            .borrow()
12931
0
            .hooks()
12932
0
            .cmd_bind_index_buffer(command_buffer, buffer, offset, index_type);
12933
0
        match layer_result {
12934
0
            LayerResult::Handled(res) => res,
12935
            LayerResult::Unhandled => unsafe {
12936
0
                (dispatch_table.cmd_bind_index_buffer)(command_buffer, buffer, offset, index_type)
12937
            },
12938
        }
12939
0
    }
12940
0
    extern "system" fn cmd_bind_vertex_buffers(
12941
0
        command_buffer: vk::CommandBuffer,
12942
0
        first_binding: u32,
12943
0
        binding_count: u32,
12944
0
        p_buffers: *const vk::Buffer,
12945
0
        p_offsets: *const vk::DeviceSize,
12946
0
    ) {
12947
0
        let global = Self::instance();
12948
0
        // vkCmdBindVertexBuffers
12949
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12950
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12951
0
        let layer_result = device_info
12952
0
            .customized_info
12953
0
            .borrow()
12954
0
            .hooks()
12955
0
            .cmd_bind_vertex_buffers(
12956
0
                command_buffer,
12957
0
                first_binding,
12958
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
12959
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
12960
0
            );
12961
0
        match layer_result {
12962
0
            LayerResult::Handled(res) => res,
12963
            LayerResult::Unhandled => unsafe {
12964
0
                (dispatch_table.cmd_bind_vertex_buffers)(
12965
0
                    command_buffer,
12966
0
                    first_binding,
12967
0
                    binding_count,
12968
0
                    p_buffers,
12969
0
                    p_offsets,
12970
0
                )
12971
            },
12972
        }
12973
0
    }
12974
0
    extern "system" fn cmd_draw(
12975
0
        command_buffer: vk::CommandBuffer,
12976
0
        vertex_count: u32,
12977
0
        instance_count: u32,
12978
0
        first_vertex: u32,
12979
0
        first_instance: u32,
12980
0
    ) {
12981
0
        let global = Self::instance();
12982
0
        // vkCmdDraw
12983
0
        let device_info = global.get_device_info(command_buffer).unwrap();
12984
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
12985
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_draw(
12986
0
            command_buffer,
12987
0
            vertex_count,
12988
0
            instance_count,
12989
0
            first_vertex,
12990
0
            first_instance,
12991
0
        );
12992
0
        match layer_result {
12993
0
            LayerResult::Handled(res) => res,
12994
            LayerResult::Unhandled => unsafe {
12995
0
                (dispatch_table.cmd_draw)(
12996
0
                    command_buffer,
12997
0
                    vertex_count,
12998
0
                    instance_count,
12999
0
                    first_vertex,
13000
0
                    first_instance,
13001
0
                )
13002
            },
13003
        }
13004
0
    }
13005
0
    extern "system" fn cmd_draw_indexed(
13006
0
        command_buffer: vk::CommandBuffer,
13007
0
        index_count: u32,
13008
0
        instance_count: u32,
13009
0
        first_index: u32,
13010
0
        vertex_offset: i32,
13011
0
        first_instance: u32,
13012
0
    ) {
13013
0
        let global = Self::instance();
13014
0
        // vkCmdDrawIndexed
13015
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13016
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13017
0
        let layer_result = device_info
13018
0
            .customized_info
13019
0
            .borrow()
13020
0
            .hooks()
13021
0
            .cmd_draw_indexed(
13022
0
                command_buffer,
13023
0
                index_count,
13024
0
                instance_count,
13025
0
                first_index,
13026
0
                vertex_offset,
13027
0
                first_instance,
13028
0
            );
13029
0
        match layer_result {
13030
0
            LayerResult::Handled(res) => res,
13031
            LayerResult::Unhandled => unsafe {
13032
0
                (dispatch_table.cmd_draw_indexed)(
13033
0
                    command_buffer,
13034
0
                    index_count,
13035
0
                    instance_count,
13036
0
                    first_index,
13037
0
                    vertex_offset,
13038
0
                    first_instance,
13039
0
                )
13040
            },
13041
        }
13042
0
    }
13043
0
    extern "system" fn cmd_draw_indirect(
13044
0
        command_buffer: vk::CommandBuffer,
13045
0
        buffer: vk::Buffer,
13046
0
        offset: vk::DeviceSize,
13047
0
        draw_count: u32,
13048
0
        stride: u32,
13049
0
    ) {
13050
0
        let global = Self::instance();
13051
0
        // vkCmdDrawIndirect
13052
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13053
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13054
0
        let layer_result = device_info
13055
0
            .customized_info
13056
0
            .borrow()
13057
0
            .hooks()
13058
0
            .cmd_draw_indirect(command_buffer, buffer, offset, draw_count, stride);
13059
0
        match layer_result {
13060
0
            LayerResult::Handled(res) => res,
13061
            LayerResult::Unhandled => unsafe {
13062
0
                (dispatch_table.cmd_draw_indirect)(
13063
0
                    command_buffer,
13064
0
                    buffer,
13065
0
                    offset,
13066
0
                    draw_count,
13067
0
                    stride,
13068
0
                )
13069
            },
13070
        }
13071
0
    }
13072
0
    extern "system" fn cmd_draw_indexed_indirect(
13073
0
        command_buffer: vk::CommandBuffer,
13074
0
        buffer: vk::Buffer,
13075
0
        offset: vk::DeviceSize,
13076
0
        draw_count: u32,
13077
0
        stride: u32,
13078
0
    ) {
13079
0
        let global = Self::instance();
13080
0
        // vkCmdDrawIndexedIndirect
13081
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13082
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13083
0
        let layer_result = device_info
13084
0
            .customized_info
13085
0
            .borrow()
13086
0
            .hooks()
13087
0
            .cmd_draw_indexed_indirect(command_buffer, buffer, offset, draw_count, stride);
13088
0
        match layer_result {
13089
0
            LayerResult::Handled(res) => res,
13090
            LayerResult::Unhandled => unsafe {
13091
0
                (dispatch_table.cmd_draw_indexed_indirect)(
13092
0
                    command_buffer,
13093
0
                    buffer,
13094
0
                    offset,
13095
0
                    draw_count,
13096
0
                    stride,
13097
0
                )
13098
            },
13099
        }
13100
0
    }
13101
0
    extern "system" fn cmd_dispatch(
13102
0
        command_buffer: vk::CommandBuffer,
13103
0
        group_countx: u32,
13104
0
        group_county: u32,
13105
0
        group_countz: u32,
13106
0
    ) {
13107
0
        let global = Self::instance();
13108
0
        // vkCmdDispatch
13109
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13110
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13111
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_dispatch(
13112
0
            command_buffer,
13113
0
            group_countx,
13114
0
            group_county,
13115
0
            group_countz,
13116
0
        );
13117
0
        match layer_result {
13118
0
            LayerResult::Handled(res) => res,
13119
            LayerResult::Unhandled => unsafe {
13120
0
                (dispatch_table.cmd_dispatch)(
13121
0
                    command_buffer,
13122
0
                    group_countx,
13123
0
                    group_county,
13124
0
                    group_countz,
13125
0
                )
13126
            },
13127
        }
13128
0
    }
13129
0
    extern "system" fn cmd_dispatch_indirect(
13130
0
        command_buffer: vk::CommandBuffer,
13131
0
        buffer: vk::Buffer,
13132
0
        offset: vk::DeviceSize,
13133
0
    ) {
13134
0
        let global = Self::instance();
13135
0
        // vkCmdDispatchIndirect
13136
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13137
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13138
0
        let layer_result = device_info
13139
0
            .customized_info
13140
0
            .borrow()
13141
0
            .hooks()
13142
0
            .cmd_dispatch_indirect(command_buffer, buffer, offset);
13143
0
        match layer_result {
13144
0
            LayerResult::Handled(res) => res,
13145
            LayerResult::Unhandled => unsafe {
13146
0
                (dispatch_table.cmd_dispatch_indirect)(command_buffer, buffer, offset)
13147
            },
13148
        }
13149
0
    }
13150
0
    extern "system" fn cmd_copy_buffer(
13151
0
        command_buffer: vk::CommandBuffer,
13152
0
        src_buffer: vk::Buffer,
13153
0
        dst_buffer: vk::Buffer,
13154
0
        region_count: u32,
13155
0
        p_regions: *const vk::BufferCopy,
13156
0
    ) {
13157
0
        let global = Self::instance();
13158
0
        // vkCmdCopyBuffer
13159
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13160
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13161
0
        let layer_result = device_info
13162
0
            .customized_info
13163
0
            .borrow()
13164
0
            .hooks()
13165
0
            .cmd_copy_buffer(command_buffer, src_buffer, dst_buffer, unsafe {
13166
0
                slice_from_raw_parts(p_regions, region_count)
13167
0
            });
13168
0
        match layer_result {
13169
0
            LayerResult::Handled(res) => res,
13170
            LayerResult::Unhandled => unsafe {
13171
0
                (dispatch_table.cmd_copy_buffer)(
13172
0
                    command_buffer,
13173
0
                    src_buffer,
13174
0
                    dst_buffer,
13175
0
                    region_count,
13176
0
                    p_regions,
13177
0
                )
13178
            },
13179
        }
13180
0
    }
13181
0
    extern "system" fn cmd_copy_image(
13182
0
        command_buffer: vk::CommandBuffer,
13183
0
        src_image: vk::Image,
13184
0
        src_image_layout: vk::ImageLayout,
13185
0
        dst_image: vk::Image,
13186
0
        dst_image_layout: vk::ImageLayout,
13187
0
        region_count: u32,
13188
0
        p_regions: *const vk::ImageCopy,
13189
0
    ) {
13190
0
        let global = Self::instance();
13191
0
        // vkCmdCopyImage
13192
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13193
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13194
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_copy_image(
13195
0
            command_buffer,
13196
0
            src_image,
13197
0
            src_image_layout,
13198
0
            dst_image,
13199
0
            dst_image_layout,
13200
0
            unsafe { slice_from_raw_parts(p_regions, region_count) },
13201
0
        );
13202
0
        match layer_result {
13203
0
            LayerResult::Handled(res) => res,
13204
            LayerResult::Unhandled => unsafe {
13205
0
                (dispatch_table.cmd_copy_image)(
13206
0
                    command_buffer,
13207
0
                    src_image,
13208
0
                    src_image_layout,
13209
0
                    dst_image,
13210
0
                    dst_image_layout,
13211
0
                    region_count,
13212
0
                    p_regions,
13213
0
                )
13214
            },
13215
        }
13216
0
    }
13217
0
    extern "system" fn cmd_blit_image(
13218
0
        command_buffer: vk::CommandBuffer,
13219
0
        src_image: vk::Image,
13220
0
        src_image_layout: vk::ImageLayout,
13221
0
        dst_image: vk::Image,
13222
0
        dst_image_layout: vk::ImageLayout,
13223
0
        region_count: u32,
13224
0
        p_regions: *const vk::ImageBlit,
13225
0
        filter: vk::Filter,
13226
0
    ) {
13227
0
        let global = Self::instance();
13228
0
        // vkCmdBlitImage
13229
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13231
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_blit_image(
13232
0
            command_buffer,
13233
0
            src_image,
13234
0
            src_image_layout,
13235
0
            dst_image,
13236
0
            dst_image_layout,
13237
0
            unsafe { slice_from_raw_parts(p_regions, region_count) },
13238
0
            filter,
13239
0
        );
13240
0
        match layer_result {
13241
0
            LayerResult::Handled(res) => res,
13242
            LayerResult::Unhandled => unsafe {
13243
0
                (dispatch_table.cmd_blit_image)(
13244
0
                    command_buffer,
13245
0
                    src_image,
13246
0
                    src_image_layout,
13247
0
                    dst_image,
13248
0
                    dst_image_layout,
13249
0
                    region_count,
13250
0
                    p_regions,
13251
0
                    filter,
13252
0
                )
13253
            },
13254
        }
13255
0
    }
13256
0
    extern "system" fn cmd_copy_buffer_to_image(
13257
0
        command_buffer: vk::CommandBuffer,
13258
0
        src_buffer: vk::Buffer,
13259
0
        dst_image: vk::Image,
13260
0
        dst_image_layout: vk::ImageLayout,
13261
0
        region_count: u32,
13262
0
        p_regions: *const vk::BufferImageCopy,
13263
0
    ) {
13264
0
        let global = Self::instance();
13265
0
        // vkCmdCopyBufferToImage
13266
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13267
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13268
0
        let layer_result = device_info
13269
0
            .customized_info
13270
0
            .borrow()
13271
0
            .hooks()
13272
0
            .cmd_copy_buffer_to_image(
13273
0
                command_buffer,
13274
0
                src_buffer,
13275
0
                dst_image,
13276
0
                dst_image_layout,
13277
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13278
0
            );
13279
0
        match layer_result {
13280
0
            LayerResult::Handled(res) => res,
13281
            LayerResult::Unhandled => unsafe {
13282
0
                (dispatch_table.cmd_copy_buffer_to_image)(
13283
0
                    command_buffer,
13284
0
                    src_buffer,
13285
0
                    dst_image,
13286
0
                    dst_image_layout,
13287
0
                    region_count,
13288
0
                    p_regions,
13289
0
                )
13290
            },
13291
        }
13292
0
    }
13293
0
    extern "system" fn cmd_copy_image_to_buffer(
13294
0
        command_buffer: vk::CommandBuffer,
13295
0
        src_image: vk::Image,
13296
0
        src_image_layout: vk::ImageLayout,
13297
0
        dst_buffer: vk::Buffer,
13298
0
        region_count: u32,
13299
0
        p_regions: *const vk::BufferImageCopy,
13300
0
    ) {
13301
0
        let global = Self::instance();
13302
0
        // vkCmdCopyImageToBuffer
13303
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13304
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13305
0
        let layer_result = device_info
13306
0
            .customized_info
13307
0
            .borrow()
13308
0
            .hooks()
13309
0
            .cmd_copy_image_to_buffer(
13310
0
                command_buffer,
13311
0
                src_image,
13312
0
                src_image_layout,
13313
0
                dst_buffer,
13314
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13315
0
            );
13316
0
        match layer_result {
13317
0
            LayerResult::Handled(res) => res,
13318
            LayerResult::Unhandled => unsafe {
13319
0
                (dispatch_table.cmd_copy_image_to_buffer)(
13320
0
                    command_buffer,
13321
0
                    src_image,
13322
0
                    src_image_layout,
13323
0
                    dst_buffer,
13324
0
                    region_count,
13325
0
                    p_regions,
13326
0
                )
13327
            },
13328
        }
13329
0
    }
13330
0
    extern "system" fn cmd_update_buffer(
13331
0
        command_buffer: vk::CommandBuffer,
13332
0
        dst_buffer: vk::Buffer,
13333
0
        dst_offset: vk::DeviceSize,
13334
0
        data_size: vk::DeviceSize,
13335
0
        p_data: *const c_void,
13336
0
    ) {
13337
0
        let global = Self::instance();
13338
0
        // vkCmdUpdateBuffer
13339
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13340
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13341
0
        let layer_result = device_info
13342
0
            .customized_info
13343
0
            .borrow()
13344
0
            .hooks()
13345
0
            .cmd_update_buffer(command_buffer, dst_buffer, dst_offset, unsafe {
13346
0
                slice_from_raw_parts(p_data as *const u8, data_size)
13347
0
            });
13348
0
        match layer_result {
13349
0
            LayerResult::Handled(res) => res,
13350
            LayerResult::Unhandled => unsafe {
13351
0
                (dispatch_table.cmd_update_buffer)(
13352
0
                    command_buffer,
13353
0
                    dst_buffer,
13354
0
                    dst_offset,
13355
0
                    data_size,
13356
0
                    p_data,
13357
0
                )
13358
            },
13359
        }
13360
0
    }
13361
0
    extern "system" fn cmd_fill_buffer(
13362
0
        command_buffer: vk::CommandBuffer,
13363
0
        dst_buffer: vk::Buffer,
13364
0
        dst_offset: vk::DeviceSize,
13365
0
        size: vk::DeviceSize,
13366
0
        data: u32,
13367
0
    ) {
13368
0
        let global = Self::instance();
13369
0
        // vkCmdFillBuffer
13370
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13371
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13372
0
        let layer_result = device_info
13373
0
            .customized_info
13374
0
            .borrow()
13375
0
            .hooks()
13376
0
            .cmd_fill_buffer(command_buffer, dst_buffer, dst_offset, size, data);
13377
0
        match layer_result {
13378
0
            LayerResult::Handled(res) => res,
13379
            LayerResult::Unhandled => unsafe {
13380
0
                (dispatch_table.cmd_fill_buffer)(command_buffer, dst_buffer, dst_offset, size, data)
13381
            },
13382
        }
13383
0
    }
13384
0
    extern "system" fn cmd_clear_color_image(
13385
0
        command_buffer: vk::CommandBuffer,
13386
0
        image: vk::Image,
13387
0
        image_layout: vk::ImageLayout,
13388
0
        p_color: *const vk::ClearColorValue,
13389
0
        range_count: u32,
13390
0
        p_ranges: *const vk::ImageSubresourceRange,
13391
0
    ) {
13392
0
        let global = Self::instance();
13393
0
        // vkCmdClearColorImage
13394
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13395
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13396
0
        let layer_result = device_info
13397
0
            .customized_info
13398
0
            .borrow()
13399
0
            .hooks()
13400
0
            .cmd_clear_color_image(
13401
0
                command_buffer,
13402
0
                image,
13403
0
                image_layout,
13404
0
                unsafe { p_color.as_ref() }.unwrap(),
13405
0
                unsafe { slice_from_raw_parts(p_ranges, range_count) },
13406
0
            );
13407
0
        match layer_result {
13408
0
            LayerResult::Handled(res) => res,
13409
            LayerResult::Unhandled => unsafe {
13410
0
                (dispatch_table.cmd_clear_color_image)(
13411
0
                    command_buffer,
13412
0
                    image,
13413
0
                    image_layout,
13414
0
                    p_color,
13415
0
                    range_count,
13416
0
                    p_ranges,
13417
0
                )
13418
            },
13419
        }
13420
0
    }
13421
0
    extern "system" fn cmd_clear_depth_stencil_image(
13422
0
        command_buffer: vk::CommandBuffer,
13423
0
        image: vk::Image,
13424
0
        image_layout: vk::ImageLayout,
13425
0
        p_depth_stencil: *const vk::ClearDepthStencilValue,
13426
0
        range_count: u32,
13427
0
        p_ranges: *const vk::ImageSubresourceRange,
13428
0
    ) {
13429
0
        let global = Self::instance();
13430
0
        // vkCmdClearDepthStencilImage
13431
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13432
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13433
0
        let layer_result = device_info
13434
0
            .customized_info
13435
0
            .borrow()
13436
0
            .hooks()
13437
0
            .cmd_clear_depth_stencil_image(
13438
0
                command_buffer,
13439
0
                image,
13440
0
                image_layout,
13441
0
                unsafe { p_depth_stencil.as_ref() }.unwrap(),
13442
0
                unsafe { slice_from_raw_parts(p_ranges, range_count) },
13443
0
            );
13444
0
        match layer_result {
13445
0
            LayerResult::Handled(res) => res,
13446
            LayerResult::Unhandled => unsafe {
13447
0
                (dispatch_table.cmd_clear_depth_stencil_image)(
13448
0
                    command_buffer,
13449
0
                    image,
13450
0
                    image_layout,
13451
0
                    p_depth_stencil,
13452
0
                    range_count,
13453
0
                    p_ranges,
13454
0
                )
13455
            },
13456
        }
13457
0
    }
13458
0
    extern "system" fn cmd_clear_attachments(
13459
0
        command_buffer: vk::CommandBuffer,
13460
0
        attachment_count: u32,
13461
0
        p_attachments: *const vk::ClearAttachment,
13462
0
        rect_count: u32,
13463
0
        p_rects: *const vk::ClearRect,
13464
0
    ) {
13465
0
        let global = Self::instance();
13466
0
        // vkCmdClearAttachments
13467
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13468
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13469
0
        let layer_result = device_info
13470
0
            .customized_info
13471
0
            .borrow()
13472
0
            .hooks()
13473
0
            .cmd_clear_attachments(
13474
0
                command_buffer,
13475
0
                unsafe { slice_from_raw_parts(p_attachments, attachment_count) },
13476
0
                unsafe { slice_from_raw_parts(p_rects, rect_count) },
13477
0
            );
13478
0
        match layer_result {
13479
0
            LayerResult::Handled(res) => res,
13480
            LayerResult::Unhandled => unsafe {
13481
0
                (dispatch_table.cmd_clear_attachments)(
13482
0
                    command_buffer,
13483
0
                    attachment_count,
13484
0
                    p_attachments,
13485
0
                    rect_count,
13486
0
                    p_rects,
13487
0
                )
13488
            },
13489
        }
13490
0
    }
13491
0
    extern "system" fn cmd_resolve_image(
13492
0
        command_buffer: vk::CommandBuffer,
13493
0
        src_image: vk::Image,
13494
0
        src_image_layout: vk::ImageLayout,
13495
0
        dst_image: vk::Image,
13496
0
        dst_image_layout: vk::ImageLayout,
13497
0
        region_count: u32,
13498
0
        p_regions: *const vk::ImageResolve,
13499
0
    ) {
13500
0
        let global = Self::instance();
13501
0
        // vkCmdResolveImage
13502
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13503
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13504
0
        let layer_result = device_info
13505
0
            .customized_info
13506
0
            .borrow()
13507
0
            .hooks()
13508
0
            .cmd_resolve_image(
13509
0
                command_buffer,
13510
0
                src_image,
13511
0
                src_image_layout,
13512
0
                dst_image,
13513
0
                dst_image_layout,
13514
0
                unsafe { slice_from_raw_parts(p_regions, region_count) },
13515
0
            );
13516
0
        match layer_result {
13517
0
            LayerResult::Handled(res) => res,
13518
            LayerResult::Unhandled => unsafe {
13519
0
                (dispatch_table.cmd_resolve_image)(
13520
0
                    command_buffer,
13521
0
                    src_image,
13522
0
                    src_image_layout,
13523
0
                    dst_image,
13524
0
                    dst_image_layout,
13525
0
                    region_count,
13526
0
                    p_regions,
13527
0
                )
13528
            },
13529
        }
13530
0
    }
13531
0
    extern "system" fn cmd_set_event(
13532
0
        command_buffer: vk::CommandBuffer,
13533
0
        event: vk::Event,
13534
0
        stage_mask: vk::PipelineStageFlags,
13535
0
    ) {
13536
0
        let global = Self::instance();
13537
0
        // vkCmdSetEvent
13538
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13539
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13540
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event(
13541
0
            command_buffer,
13542
0
            event,
13543
0
            stage_mask,
13544
0
        );
13545
0
        match layer_result {
13546
0
            LayerResult::Handled(res) => res,
13547
            LayerResult::Unhandled => unsafe {
13548
0
                (dispatch_table.cmd_set_event)(command_buffer, event, stage_mask)
13549
            },
13550
        }
13551
0
    }
13552
0
    extern "system" fn cmd_reset_event(
13553
0
        command_buffer: vk::CommandBuffer,
13554
0
        event: vk::Event,
13555
0
        stage_mask: vk::PipelineStageFlags,
13556
0
    ) {
13557
0
        let global = Self::instance();
13558
0
        // vkCmdResetEvent
13559
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13560
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13561
0
        let layer_result = device_info
13562
0
            .customized_info
13563
0
            .borrow()
13564
0
            .hooks()
13565
0
            .cmd_reset_event(command_buffer, event, stage_mask);
13566
0
        match layer_result {
13567
0
            LayerResult::Handled(res) => res,
13568
            LayerResult::Unhandled => unsafe {
13569
0
                (dispatch_table.cmd_reset_event)(command_buffer, event, stage_mask)
13570
            },
13571
        }
13572
0
    }
13573
0
    extern "system" fn cmd_wait_events(
13574
0
        command_buffer: vk::CommandBuffer,
13575
0
        event_count: u32,
13576
0
        p_events: *const vk::Event,
13577
0
        src_stage_mask: vk::PipelineStageFlags,
13578
0
        dst_stage_mask: vk::PipelineStageFlags,
13579
0
        memory_barrier_count: u32,
13580
0
        p_memory_barriers: *const vk::MemoryBarrier,
13581
0
        buffer_memory_barrier_count: u32,
13582
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13583
0
        image_memory_barrier_count: u32,
13584
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13585
0
    ) {
13586
0
        let global = Self::instance();
13587
0
        // vkCmdWaitEvents
13588
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13589
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13590
0
        let layer_result = device_info
13591
0
            .customized_info
13592
0
            .borrow()
13593
0
            .hooks()
13594
0
            .cmd_wait_events(
13595
0
                command_buffer,
13596
0
                unsafe { slice_from_raw_parts(p_events, event_count) },
13597
0
                src_stage_mask,
13598
0
                dst_stage_mask,
13599
0
                unsafe { slice_from_raw_parts(p_memory_barriers, memory_barrier_count) },
13600
0
                unsafe {
13601
0
                    slice_from_raw_parts(p_buffer_memory_barriers, buffer_memory_barrier_count)
13602
0
                },
13603
0
                unsafe {
13604
0
                    slice_from_raw_parts(p_image_memory_barriers, image_memory_barrier_count)
13605
0
                },
13606
0
            );
13607
0
        match layer_result {
13608
0
            LayerResult::Handled(res) => res,
13609
            LayerResult::Unhandled => unsafe {
13610
0
                (dispatch_table.cmd_wait_events)(
13611
0
                    command_buffer,
13612
0
                    event_count,
13613
0
                    p_events,
13614
0
                    src_stage_mask,
13615
0
                    dst_stage_mask,
13616
0
                    memory_barrier_count,
13617
0
                    p_memory_barriers,
13618
0
                    buffer_memory_barrier_count,
13619
0
                    p_buffer_memory_barriers,
13620
0
                    image_memory_barrier_count,
13621
0
                    p_image_memory_barriers,
13622
0
                )
13623
            },
13624
        }
13625
0
    }
13626
0
    extern "system" fn cmd_pipeline_barrier(
13627
0
        command_buffer: vk::CommandBuffer,
13628
0
        src_stage_mask: vk::PipelineStageFlags,
13629
0
        dst_stage_mask: vk::PipelineStageFlags,
13630
0
        dependency_flags: vk::DependencyFlags,
13631
0
        memory_barrier_count: u32,
13632
0
        p_memory_barriers: *const vk::MemoryBarrier,
13633
0
        buffer_memory_barrier_count: u32,
13634
0
        p_buffer_memory_barriers: *const vk::BufferMemoryBarrier,
13635
0
        image_memory_barrier_count: u32,
13636
0
        p_image_memory_barriers: *const vk::ImageMemoryBarrier,
13637
0
    ) {
13638
0
        let global = Self::instance();
13639
0
        // vkCmdPipelineBarrier
13640
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13641
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13642
0
        let layer_result = device_info
13643
0
            .customized_info
13644
0
            .borrow()
13645
0
            .hooks()
13646
0
            .cmd_pipeline_barrier(
13647
0
                command_buffer,
13648
0
                src_stage_mask,
13649
0
                dst_stage_mask,
13650
0
                dependency_flags,
13651
0
                unsafe { slice_from_raw_parts(p_memory_barriers, memory_barrier_count) },
13652
0
                unsafe {
13653
0
                    slice_from_raw_parts(p_buffer_memory_barriers, buffer_memory_barrier_count)
13654
0
                },
13655
0
                unsafe {
13656
0
                    slice_from_raw_parts(p_image_memory_barriers, image_memory_barrier_count)
13657
0
                },
13658
0
            );
13659
0
        match layer_result {
13660
0
            LayerResult::Handled(res) => res,
13661
            LayerResult::Unhandled => unsafe {
13662
0
                (dispatch_table.cmd_pipeline_barrier)(
13663
0
                    command_buffer,
13664
0
                    src_stage_mask,
13665
0
                    dst_stage_mask,
13666
0
                    dependency_flags,
13667
0
                    memory_barrier_count,
13668
0
                    p_memory_barriers,
13669
0
                    buffer_memory_barrier_count,
13670
0
                    p_buffer_memory_barriers,
13671
0
                    image_memory_barrier_count,
13672
0
                    p_image_memory_barriers,
13673
0
                )
13674
            },
13675
        }
13676
0
    }
13677
0
    extern "system" fn cmd_begin_query(
13678
0
        command_buffer: vk::CommandBuffer,
13679
0
        query_pool: vk::QueryPool,
13680
0
        query: u32,
13681
0
        flags: vk::QueryControlFlags,
13682
0
    ) {
13683
0
        let global = Self::instance();
13684
0
        // vkCmdBeginQuery
13685
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13686
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13687
0
        let layer_result = device_info
13688
0
            .customized_info
13689
0
            .borrow()
13690
0
            .hooks()
13691
0
            .cmd_begin_query(command_buffer, query_pool, query, flags);
13692
0
        match layer_result {
13693
0
            LayerResult::Handled(res) => res,
13694
            LayerResult::Unhandled => unsafe {
13695
0
                (dispatch_table.cmd_begin_query)(command_buffer, query_pool, query, flags)
13696
            },
13697
        }
13698
0
    }
13699
0
    extern "system" fn cmd_end_query(
13700
0
        command_buffer: vk::CommandBuffer,
13701
0
        query_pool: vk::QueryPool,
13702
0
        query: u32,
13703
0
    ) {
13704
0
        let global = Self::instance();
13705
0
        // vkCmdEndQuery
13706
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13707
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13708
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_end_query(
13709
0
            command_buffer,
13710
0
            query_pool,
13711
0
            query,
13712
0
        );
13713
0
        match layer_result {
13714
0
            LayerResult::Handled(res) => res,
13715
            LayerResult::Unhandled => unsafe {
13716
0
                (dispatch_table.cmd_end_query)(command_buffer, query_pool, query)
13717
            },
13718
        }
13719
0
    }
13720
0
    extern "system" fn cmd_reset_query_pool(
13721
0
        command_buffer: vk::CommandBuffer,
13722
0
        query_pool: vk::QueryPool,
13723
0
        first_query: u32,
13724
0
        query_count: u32,
13725
0
    ) {
13726
0
        let global = Self::instance();
13727
0
        // vkCmdResetQueryPool
13728
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13729
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13730
0
        let layer_result = device_info
13731
0
            .customized_info
13732
0
            .borrow()
13733
0
            .hooks()
13734
0
            .cmd_reset_query_pool(command_buffer, query_pool, first_query, query_count);
13735
0
        match layer_result {
13736
0
            LayerResult::Handled(res) => res,
13737
            LayerResult::Unhandled => unsafe {
13738
0
                (dispatch_table.cmd_reset_query_pool)(
13739
0
                    command_buffer,
13740
0
                    query_pool,
13741
0
                    first_query,
13742
0
                    query_count,
13743
0
                )
13744
            },
13745
        }
13746
0
    }
13747
0
    extern "system" fn cmd_write_timestamp(
13748
0
        command_buffer: vk::CommandBuffer,
13749
0
        pipeline_stage: vk::PipelineStageFlags,
13750
0
        query_pool: vk::QueryPool,
13751
0
        query: u32,
13752
0
    ) {
13753
0
        let global = Self::instance();
13754
0
        // vkCmdWriteTimestamp
13755
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13756
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13757
0
        let layer_result = device_info
13758
0
            .customized_info
13759
0
            .borrow()
13760
0
            .hooks()
13761
0
            .cmd_write_timestamp(command_buffer, pipeline_stage, query_pool, query);
13762
0
        match layer_result {
13763
0
            LayerResult::Handled(res) => res,
13764
            LayerResult::Unhandled => unsafe {
13765
0
                (dispatch_table.cmd_write_timestamp)(
13766
0
                    command_buffer,
13767
0
                    pipeline_stage,
13768
0
                    query_pool,
13769
0
                    query,
13770
0
                )
13771
            },
13772
        }
13773
0
    }
13774
0
    extern "system" fn cmd_copy_query_pool_results(
13775
0
        command_buffer: vk::CommandBuffer,
13776
0
        query_pool: vk::QueryPool,
13777
0
        first_query: u32,
13778
0
        query_count: u32,
13779
0
        dst_buffer: vk::Buffer,
13780
0
        dst_offset: vk::DeviceSize,
13781
0
        stride: vk::DeviceSize,
13782
0
        flags: vk::QueryResultFlags,
13783
0
    ) {
13784
0
        let global = Self::instance();
13785
0
        // vkCmdCopyQueryPoolResults
13786
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13787
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13788
0
        let layer_result = device_info
13789
0
            .customized_info
13790
0
            .borrow()
13791
0
            .hooks()
13792
0
            .cmd_copy_query_pool_results(
13793
0
                command_buffer,
13794
0
                query_pool,
13795
0
                first_query,
13796
0
                query_count,
13797
0
                dst_buffer,
13798
0
                dst_offset,
13799
0
                stride,
13800
0
                flags,
13801
0
            );
13802
0
        match layer_result {
13803
0
            LayerResult::Handled(res) => res,
13804
            LayerResult::Unhandled => unsafe {
13805
0
                (dispatch_table.cmd_copy_query_pool_results)(
13806
0
                    command_buffer,
13807
0
                    query_pool,
13808
0
                    first_query,
13809
0
                    query_count,
13810
0
                    dst_buffer,
13811
0
                    dst_offset,
13812
0
                    stride,
13813
0
                    flags,
13814
0
                )
13815
            },
13816
        }
13817
0
    }
13818
0
    extern "system" fn cmd_push_constants(
13819
0
        command_buffer: vk::CommandBuffer,
13820
0
        layout: vk::PipelineLayout,
13821
0
        stage_flags: vk::ShaderStageFlags,
13822
0
        offset: u32,
13823
0
        size: u32,
13824
0
        p_values: *const c_void,
13825
0
    ) {
13826
0
        let global = Self::instance();
13827
0
        // vkCmdPushConstants
13828
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13829
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13830
0
        let layer_result = device_info
13831
0
            .customized_info
13832
0
            .borrow()
13833
0
            .hooks()
13834
0
            .cmd_push_constants(command_buffer, layout, stage_flags, offset, unsafe {
13835
0
                slice_from_raw_parts(p_values as *const u8, size)
13836
0
            });
13837
0
        match layer_result {
13838
0
            LayerResult::Handled(res) => res,
13839
            LayerResult::Unhandled => unsafe {
13840
0
                (dispatch_table.cmd_push_constants)(
13841
0
                    command_buffer,
13842
0
                    layout,
13843
0
                    stage_flags,
13844
0
                    offset,
13845
0
                    size,
13846
0
                    p_values,
13847
0
                )
13848
            },
13849
        }
13850
0
    }
13851
0
    extern "system" fn cmd_begin_render_pass(
13852
0
        command_buffer: vk::CommandBuffer,
13853
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
13854
0
        contents: vk::SubpassContents,
13855
0
    ) {
13856
0
        let global = Self::instance();
13857
0
        // vkCmdBeginRenderPass
13858
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13859
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13860
0
        let layer_result = device_info
13861
0
            .customized_info
13862
0
            .borrow()
13863
0
            .hooks()
13864
0
            .cmd_begin_render_pass(
13865
0
                command_buffer,
13866
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
13867
0
                contents,
13868
0
            );
13869
0
        match layer_result {
13870
0
            LayerResult::Handled(res) => res,
13871
            LayerResult::Unhandled => unsafe {
13872
0
                (dispatch_table.cmd_begin_render_pass)(
13873
0
                    command_buffer,
13874
0
                    p_render_pass_begin,
13875
0
                    contents,
13876
0
                )
13877
            },
13878
        }
13879
0
    }
13880
0
    extern "system" fn cmd_next_subpass(
13881
0
        command_buffer: vk::CommandBuffer,
13882
0
        contents: vk::SubpassContents,
13883
0
    ) {
13884
0
        let global = Self::instance();
13885
0
        // vkCmdNextSubpass
13886
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13887
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13888
0
        let layer_result = device_info
13889
0
            .customized_info
13890
0
            .borrow()
13891
0
            .hooks()
13892
0
            .cmd_next_subpass(command_buffer, contents);
13893
0
        match layer_result {
13894
0
            LayerResult::Handled(res) => res,
13895
            LayerResult::Unhandled => unsafe {
13896
0
                (dispatch_table.cmd_next_subpass)(command_buffer, contents)
13897
            },
13898
        }
13899
0
    }
13900
0
    extern "system" fn cmd_end_render_pass(command_buffer: vk::CommandBuffer) {
13901
0
        let global = Self::instance();
13902
0
        // vkCmdEndRenderPass
13903
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13904
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13905
0
        let layer_result = device_info
13906
0
            .customized_info
13907
0
            .borrow()
13908
0
            .hooks()
13909
0
            .cmd_end_render_pass(command_buffer);
13910
0
        match layer_result {
13911
0
            LayerResult::Handled(res) => res,
13912
            LayerResult::Unhandled => unsafe {
13913
0
                (dispatch_table.cmd_end_render_pass)(command_buffer)
13914
            },
13915
        }
13916
0
    }
13917
0
    extern "system" fn cmd_execute_commands(
13918
0
        command_buffer: vk::CommandBuffer,
13919
0
        command_buffer_count: u32,
13920
0
        p_command_buffers: *const vk::CommandBuffer,
13921
0
    ) {
13922
0
        let global = Self::instance();
13923
0
        // vkCmdExecuteCommands
13924
0
        let device_info = global.get_device_info(command_buffer).unwrap();
13925
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_0();
13926
0
        let layer_result = device_info
13927
0
            .customized_info
13928
0
            .borrow()
13929
0
            .hooks()
13930
0
            .cmd_execute_commands(command_buffer, unsafe {
13931
0
                slice_from_raw_parts(p_command_buffers, command_buffer_count)
13932
0
            });
13933
0
        match layer_result {
13934
0
            LayerResult::Handled(res) => res,
13935
            LayerResult::Unhandled => unsafe {
13936
0
                (dispatch_table.cmd_execute_commands)(
13937
0
                    command_buffer,
13938
0
                    command_buffer_count,
13939
0
                    p_command_buffers,
13940
0
                )
13941
            },
13942
        }
13943
0
    }
13944
0
    extern "system" fn bind_buffer_memory2(
13945
0
        device: vk::Device,
13946
0
        bind_info_count: u32,
13947
0
        p_bind_infos: *const vk::BindBufferMemoryInfo,
13948
0
    ) -> vk::Result {
13949
0
        let global = Self::instance();
13950
0
        // vkBindBufferMemory2
13951
0
        let device_info = global.get_device_info(device).unwrap();
13952
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
13953
0
        let layer_result = device_info
13954
0
            .customized_info
13955
0
            .borrow()
13956
0
            .hooks()
13957
0
            .bind_buffer_memory2(unsafe { slice_from_raw_parts(p_bind_infos, bind_info_count) });
13958
0
        match layer_result {
13959
0
            LayerResult::Handled(res) => match res {
13960
0
                Ok(()) => vk::Result::SUCCESS,
13961
0
                Err(e) => e,
13962
            },
13963
            LayerResult::Unhandled => unsafe {
13964
0
                (dispatch_table.bind_buffer_memory2)(device, bind_info_count, p_bind_infos)
13965
            },
13966
        }
13967
0
    }
13968
0
    extern "system" fn bind_image_memory2(
13969
0
        device: vk::Device,
13970
0
        bind_info_count: u32,
13971
0
        p_bind_infos: *const vk::BindImageMemoryInfo,
13972
0
    ) -> vk::Result {
13973
0
        let global = Self::instance();
13974
0
        // vkBindImageMemory2
13975
0
        let device_info = global.get_device_info(device).unwrap();
13976
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
13977
0
        let layer_result = device_info
13978
0
            .customized_info
13979
0
            .borrow()
13980
0
            .hooks()
13981
0
            .bind_image_memory2(unsafe { slice_from_raw_parts(p_bind_infos, bind_info_count) });
13982
0
        match layer_result {
13983
0
            LayerResult::Handled(res) => match res {
13984
0
                Ok(()) => vk::Result::SUCCESS,
13985
0
                Err(e) => e,
13986
            },
13987
            LayerResult::Unhandled => unsafe {
13988
0
                (dispatch_table.bind_image_memory2)(device, bind_info_count, p_bind_infos)
13989
            },
13990
        }
13991
0
    }
13992
0
    extern "system" fn get_device_group_peer_memory_features(
13993
0
        device: vk::Device,
13994
0
        heap_index: u32,
13995
0
        local_device_index: u32,
13996
0
        remote_device_index: u32,
13997
0
        p_peer_memory_features: *mut vk::PeerMemoryFeatureFlags,
13998
0
    ) {
13999
0
        let global = Self::instance();
14000
0
        // vkGetDeviceGroupPeerMemoryFeatures
14001
0
        let device_info = global.get_device_info(device).unwrap();
14002
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14003
0
        let layer_result = device_info
14004
0
            .customized_info
14005
0
            .borrow()
14006
0
            .hooks()
14007
0
            .get_device_group_peer_memory_features(
14008
0
                heap_index,
14009
0
                local_device_index,
14010
0
                remote_device_index,
14011
0
            );
14012
0
        match layer_result {
14013
0
            LayerResult::Handled(res) => {
14014
0
                *unsafe { p_peer_memory_features.as_mut() }.unwrap() = res;
14015
0
            }
14016
            LayerResult::Unhandled => unsafe {
14017
0
                (dispatch_table.get_device_group_peer_memory_features)(
14018
0
                    device,
14019
0
                    heap_index,
14020
0
                    local_device_index,
14021
0
                    remote_device_index,
14022
0
                    p_peer_memory_features,
14023
0
                )
14024
            },
14025
        }
14026
0
    }
14027
0
    extern "system" fn cmd_set_device_mask(command_buffer: vk::CommandBuffer, device_mask: u32) {
14028
0
        let global = Self::instance();
14029
0
        // vkCmdSetDeviceMask
14030
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14031
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14032
0
        let layer_result = device_info
14033
0
            .customized_info
14034
0
            .borrow()
14035
0
            .hooks()
14036
0
            .cmd_set_device_mask(command_buffer, device_mask);
14037
0
        match layer_result {
14038
0
            LayerResult::Handled(res) => res,
14039
            LayerResult::Unhandled => unsafe {
14040
0
                (dispatch_table.cmd_set_device_mask)(command_buffer, device_mask)
14041
            },
14042
        }
14043
0
    }
14044
0
    extern "system" fn cmd_dispatch_base(
14045
0
        command_buffer: vk::CommandBuffer,
14046
0
        base_groupx: u32,
14047
0
        base_groupy: u32,
14048
0
        base_groupz: u32,
14049
0
        group_countx: u32,
14050
0
        group_county: u32,
14051
0
        group_countz: u32,
14052
0
    ) {
14053
0
        let global = Self::instance();
14054
0
        // vkCmdDispatchBase
14055
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14056
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14057
0
        let layer_result = device_info
14058
0
            .customized_info
14059
0
            .borrow()
14060
0
            .hooks()
14061
0
            .cmd_dispatch_base(
14062
0
                command_buffer,
14063
0
                base_groupx,
14064
0
                base_groupy,
14065
0
                base_groupz,
14066
0
                group_countx,
14067
0
                group_county,
14068
0
                group_countz,
14069
0
            );
14070
0
        match layer_result {
14071
0
            LayerResult::Handled(res) => res,
14072
            LayerResult::Unhandled => unsafe {
14073
0
                (dispatch_table.cmd_dispatch_base)(
14074
0
                    command_buffer,
14075
0
                    base_groupx,
14076
0
                    base_groupy,
14077
0
                    base_groupz,
14078
0
                    group_countx,
14079
0
                    group_county,
14080
0
                    group_countz,
14081
0
                )
14082
            },
14083
        }
14084
0
    }
14085
0
    extern "system" fn get_image_memory_requirements2(
14086
0
        device: vk::Device,
14087
0
        p_info: *const vk::ImageMemoryRequirementsInfo2,
14088
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14089
0
    ) {
14090
0
        let global = Self::instance();
14091
0
        // vkGetImageMemoryRequirements2
14092
0
        let device_info = global.get_device_info(device).unwrap();
14093
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14094
0
        let layer_result = device_info
14095
0
            .customized_info
14096
0
            .borrow()
14097
0
            .hooks()
14098
0
            .get_image_memory_requirements2(
14099
0
                unsafe { p_info.as_ref() }.unwrap(),
14100
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
14101
0
            );
14102
0
        match layer_result {
14103
0
            LayerResult::Handled(res) => res,
14104
            LayerResult::Unhandled => unsafe {
14105
0
                (dispatch_table.get_image_memory_requirements2)(
14106
0
                    device,
14107
0
                    p_info,
14108
0
                    p_memory_requirements,
14109
0
                )
14110
            },
14111
        }
14112
0
    }
14113
0
    extern "system" fn get_buffer_memory_requirements2(
14114
0
        device: vk::Device,
14115
0
        p_info: *const vk::BufferMemoryRequirementsInfo2,
14116
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
14117
0
    ) {
14118
0
        let global = Self::instance();
14119
0
        // vkGetBufferMemoryRequirements2
14120
0
        let device_info = global.get_device_info(device).unwrap();
14121
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14122
0
        let layer_result = device_info
14123
0
            .customized_info
14124
0
            .borrow()
14125
0
            .hooks()
14126
0
            .get_buffer_memory_requirements2(
14127
0
                unsafe { p_info.as_ref() }.unwrap(),
14128
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
14129
0
            );
14130
0
        match layer_result {
14131
0
            LayerResult::Handled(res) => res,
14132
            LayerResult::Unhandled => unsafe {
14133
0
                (dispatch_table.get_buffer_memory_requirements2)(
14134
0
                    device,
14135
0
                    p_info,
14136
0
                    p_memory_requirements,
14137
0
                )
14138
            },
14139
        }
14140
0
    }
14141
0
    extern "system" fn get_image_sparse_memory_requirements2(
14142
0
        device: vk::Device,
14143
0
        p_info: *const vk::ImageSparseMemoryRequirementsInfo2,
14144
0
        p_sparse_memory_requirement_count: *mut u32,
14145
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
14146
0
    ) {
14147
0
        let global = Self::instance();
14148
0
        // vkGetImageSparseMemoryRequirements2
14149
0
        let device_info = global.get_device_info(device).unwrap();
14150
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14151
0
        let layer_result = device_info
14152
0
            .customized_info
14153
0
            .borrow()
14154
0
            .hooks()
14155
0
            .get_image_sparse_memory_requirements2(
14156
0
                unsafe { p_info.as_ref() }.unwrap(),
14157
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
14158
0
                unsafe {
14159
0
                    maybe_uninit_slice_from_raw_parts_mut(
14160
0
                        p_sparse_memory_requirements,
14161
0
                        p_sparse_memory_requirement_count,
14162
0
                    )
14163
0
                },
14164
0
            );
14165
0
        match layer_result {
14166
0
            LayerResult::Handled(res) => res,
14167
            LayerResult::Unhandled => unsafe {
14168
0
                (dispatch_table.get_image_sparse_memory_requirements2)(
14169
0
                    device,
14170
0
                    p_info,
14171
0
                    p_sparse_memory_requirement_count,
14172
0
                    p_sparse_memory_requirements,
14173
0
                )
14174
            },
14175
        }
14176
0
    }
14177
0
    extern "system" fn trim_command_pool(
14178
0
        device: vk::Device,
14179
0
        command_pool: vk::CommandPool,
14180
0
        flags: vk::CommandPoolTrimFlags,
14181
0
    ) {
14182
0
        let global = Self::instance();
14183
0
        // vkTrimCommandPool
14184
0
        let device_info = global.get_device_info(device).unwrap();
14185
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14186
0
        let layer_result = device_info
14187
0
            .customized_info
14188
0
            .borrow()
14189
0
            .hooks()
14190
0
            .trim_command_pool(command_pool, flags);
14191
0
        match layer_result {
14192
0
            LayerResult::Handled(res) => res,
14193
            LayerResult::Unhandled => unsafe {
14194
0
                (dispatch_table.trim_command_pool)(device, command_pool, flags)
14195
            },
14196
        }
14197
0
    }
14198
0
    extern "system" fn get_device_queue2(
14199
0
        device: vk::Device,
14200
0
        p_queue_info: *const vk::DeviceQueueInfo2,
14201
0
        p_queue: *mut vk::Queue,
14202
0
    ) {
14203
0
        let global = Self::instance();
14204
0
        // vkGetDeviceQueue2
14205
0
        let device_info = global.get_device_info(device).unwrap();
14206
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14207
0
        let layer_result = device_info
14208
0
            .customized_info
14209
0
            .borrow()
14210
0
            .hooks()
14211
0
            .get_device_queue2(unsafe { p_queue_info.as_ref() }.unwrap());
14212
0
        match layer_result {
14213
0
            LayerResult::Handled(res) => {
14214
0
                *unsafe { p_queue.as_mut() }.unwrap() = res;
14215
0
            }
14216
            LayerResult::Unhandled => unsafe {
14217
0
                (dispatch_table.get_device_queue2)(device, p_queue_info, p_queue)
14218
            },
14219
        }
14220
0
    }
14221
0
    extern "system" fn create_sampler_ycbcr_conversion(
14222
0
        device: vk::Device,
14223
0
        p_create_info: *const vk::SamplerYcbcrConversionCreateInfo,
14224
0
        p_allocator: *const vk::AllocationCallbacks,
14225
0
        p_ycbcr_conversion: *mut vk::SamplerYcbcrConversion,
14226
0
    ) -> vk::Result {
14227
0
        let global = Self::instance();
14228
0
        // vkCreateSamplerYcbcrConversion
14229
0
        let device_info = global.get_device_info(device).unwrap();
14230
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14231
0
        let layer_result = device_info
14232
0
            .customized_info
14233
0
            .borrow()
14234
0
            .hooks()
14235
0
            .create_sampler_ycbcr_conversion(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14236
0
                p_allocator.as_ref()
14237
0
            });
14238
0
        match layer_result {
14239
0
            LayerResult::Handled(res) => match res {
14240
0
                Ok(res) => {
14241
0
                    *unsafe { p_ycbcr_conversion.as_mut() }.unwrap() = res;
14242
0
                    vk::Result::SUCCESS
14243
                }
14244
0
                Err(e) => e,
14245
            },
14246
            LayerResult::Unhandled => unsafe {
14247
0
                (dispatch_table.create_sampler_ycbcr_conversion)(
14248
0
                    device,
14249
0
                    p_create_info,
14250
0
                    p_allocator,
14251
0
                    p_ycbcr_conversion,
14252
0
                )
14253
            },
14254
        }
14255
0
    }
14256
1
    extern "system" fn destroy_sampler_ycbcr_conversion(
14257
1
        device: vk::Device,
14258
1
        ycbcr_conversion: vk::SamplerYcbcrConversion,
14259
1
        p_allocator: *const vk::AllocationCallbacks,
14260
1
    ) {
14261
1
        let global = Self::instance();
14262
1
        // vkDestroySamplerYcbcrConversion
14263
1
        let device_info = global.get_device_info(device).unwrap();
14264
1
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14265
1
        let layer_result = device_info
14266
1
            .customized_info
14267
1
            .borrow()
14268
1
            .hooks()
14269
1
            .destroy_sampler_ycbcr_conversion(ycbcr_conversion, unsafe { p_allocator.as_ref() });
14270
1
        match layer_result {
14271
0
            LayerResult::Handled(res) => res,
14272
            LayerResult::Unhandled => unsafe {
14273
1
                (dispatch_table.destroy_sampler_ycbcr_conversion)(
14274
1
                    device,
14275
1
                    ycbcr_conversion,
14276
1
                    p_allocator,
14277
1
                )
14278
            },
14279
        }
14280
1
    }
14281
0
    extern "system" fn create_descriptor_update_template(
14282
0
        device: vk::Device,
14283
0
        p_create_info: *const vk::DescriptorUpdateTemplateCreateInfo,
14284
0
        p_allocator: *const vk::AllocationCallbacks,
14285
0
        p_descriptor_update_template: *mut vk::DescriptorUpdateTemplate,
14286
0
    ) -> vk::Result {
14287
0
        let global = Self::instance();
14288
0
        // vkCreateDescriptorUpdateTemplate
14289
0
        let device_info = global.get_device_info(device).unwrap();
14290
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14291
0
        let layer_result = device_info
14292
0
            .customized_info
14293
0
            .borrow()
14294
0
            .hooks()
14295
0
            .create_descriptor_update_template(
14296
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14297
0
                unsafe { p_allocator.as_ref() },
14298
0
            );
14299
0
        match layer_result {
14300
0
            LayerResult::Handled(res) => match res {
14301
0
                Ok(res) => {
14302
0
                    *unsafe { p_descriptor_update_template.as_mut() }.unwrap() = res;
14303
0
                    vk::Result::SUCCESS
14304
                }
14305
0
                Err(e) => e,
14306
            },
14307
            LayerResult::Unhandled => unsafe {
14308
0
                (dispatch_table.create_descriptor_update_template)(
14309
0
                    device,
14310
0
                    p_create_info,
14311
0
                    p_allocator,
14312
0
                    p_descriptor_update_template,
14313
0
                )
14314
            },
14315
        }
14316
0
    }
14317
0
    extern "system" fn destroy_descriptor_update_template(
14318
0
        device: vk::Device,
14319
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14320
0
        p_allocator: *const vk::AllocationCallbacks,
14321
0
    ) {
14322
0
        let global = Self::instance();
14323
0
        // vkDestroyDescriptorUpdateTemplate
14324
0
        let device_info = global.get_device_info(device).unwrap();
14325
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14326
0
        let layer_result = device_info
14327
0
            .customized_info
14328
0
            .borrow()
14329
0
            .hooks()
14330
0
            .destroy_descriptor_update_template(descriptor_update_template, unsafe {
14331
0
                p_allocator.as_ref()
14332
0
            });
14333
0
        match layer_result {
14334
0
            LayerResult::Handled(res) => res,
14335
            LayerResult::Unhandled => unsafe {
14336
0
                (dispatch_table.destroy_descriptor_update_template)(
14337
0
                    device,
14338
0
                    descriptor_update_template,
14339
0
                    p_allocator,
14340
0
                )
14341
            },
14342
        }
14343
0
    }
14344
0
    extern "system" fn update_descriptor_set_with_template(
14345
0
        device: vk::Device,
14346
0
        descriptor_set: vk::DescriptorSet,
14347
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
14348
0
        p_data: *const c_void,
14349
0
    ) {
14350
0
        let global = Self::instance();
14351
0
        // vkUpdateDescriptorSetWithTemplate
14352
0
        let device_info = global.get_device_info(device).unwrap();
14353
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14354
0
        let layer_result = device_info
14355
0
            .customized_info
14356
0
            .borrow()
14357
0
            .hooks()
14358
0
            .update_descriptor_set_with_template(
14359
0
                descriptor_set,
14360
0
                descriptor_update_template,
14361
0
                p_data,
14362
0
            );
14363
0
        match layer_result {
14364
0
            LayerResult::Handled(res) => res,
14365
            LayerResult::Unhandled => unsafe {
14366
0
                (dispatch_table.update_descriptor_set_with_template)(
14367
0
                    device,
14368
0
                    descriptor_set,
14369
0
                    descriptor_update_template,
14370
0
                    p_data,
14371
0
                )
14372
            },
14373
        }
14374
0
    }
14375
0
    extern "system" fn get_descriptor_set_layout_support(
14376
0
        device: vk::Device,
14377
0
        p_create_info: *const vk::DescriptorSetLayoutCreateInfo,
14378
0
        p_support: *mut vk::DescriptorSetLayoutSupport,
14379
0
    ) {
14380
0
        let global = Self::instance();
14381
0
        // vkGetDescriptorSetLayoutSupport
14382
0
        let device_info = global.get_device_info(device).unwrap();
14383
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_1();
14384
0
        let layer_result = device_info
14385
0
            .customized_info
14386
0
            .borrow()
14387
0
            .hooks()
14388
0
            .get_descriptor_set_layout_support(
14389
0
                unsafe { p_create_info.as_ref() }.unwrap(),
14390
0
                unsafe { ptr_as_uninit_mut(p_support) }.unwrap(),
14391
0
            );
14392
0
        match layer_result {
14393
0
            LayerResult::Handled(res) => res,
14394
            LayerResult::Unhandled => unsafe {
14395
0
                (dispatch_table.get_descriptor_set_layout_support)(device, p_create_info, p_support)
14396
            },
14397
        }
14398
0
    }
14399
0
    extern "system" fn cmd_draw_indirect_count(
14400
0
        command_buffer: vk::CommandBuffer,
14401
0
        buffer: vk::Buffer,
14402
0
        offset: vk::DeviceSize,
14403
0
        count_buffer: vk::Buffer,
14404
0
        count_buffer_offset: vk::DeviceSize,
14405
0
        max_draw_count: u32,
14406
0
        stride: u32,
14407
0
    ) {
14408
0
        let global = Self::instance();
14409
0
        // vkCmdDrawIndirectCount
14410
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14411
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14412
0
        let layer_result = device_info
14413
0
            .customized_info
14414
0
            .borrow()
14415
0
            .hooks()
14416
0
            .cmd_draw_indirect_count(
14417
0
                command_buffer,
14418
0
                buffer,
14419
0
                offset,
14420
0
                count_buffer,
14421
0
                count_buffer_offset,
14422
0
                max_draw_count,
14423
0
                stride,
14424
0
            );
14425
0
        match layer_result {
14426
0
            LayerResult::Handled(res) => res,
14427
            LayerResult::Unhandled => unsafe {
14428
0
                (dispatch_table.cmd_draw_indirect_count)(
14429
0
                    command_buffer,
14430
0
                    buffer,
14431
0
                    offset,
14432
0
                    count_buffer,
14433
0
                    count_buffer_offset,
14434
0
                    max_draw_count,
14435
0
                    stride,
14436
0
                )
14437
            },
14438
        }
14439
0
    }
14440
0
    extern "system" fn cmd_draw_indexed_indirect_count(
14441
0
        command_buffer: vk::CommandBuffer,
14442
0
        buffer: vk::Buffer,
14443
0
        offset: vk::DeviceSize,
14444
0
        count_buffer: vk::Buffer,
14445
0
        count_buffer_offset: vk::DeviceSize,
14446
0
        max_draw_count: u32,
14447
0
        stride: u32,
14448
0
    ) {
14449
0
        let global = Self::instance();
14450
0
        // vkCmdDrawIndexedIndirectCount
14451
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14452
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14453
0
        let layer_result = device_info
14454
0
            .customized_info
14455
0
            .borrow()
14456
0
            .hooks()
14457
0
            .cmd_draw_indexed_indirect_count(
14458
0
                command_buffer,
14459
0
                buffer,
14460
0
                offset,
14461
0
                count_buffer,
14462
0
                count_buffer_offset,
14463
0
                max_draw_count,
14464
0
                stride,
14465
0
            );
14466
0
        match layer_result {
14467
0
            LayerResult::Handled(res) => res,
14468
            LayerResult::Unhandled => unsafe {
14469
0
                (dispatch_table.cmd_draw_indexed_indirect_count)(
14470
0
                    command_buffer,
14471
0
                    buffer,
14472
0
                    offset,
14473
0
                    count_buffer,
14474
0
                    count_buffer_offset,
14475
0
                    max_draw_count,
14476
0
                    stride,
14477
0
                )
14478
            },
14479
        }
14480
0
    }
14481
0
    extern "system" fn create_render_pass2(
14482
0
        device: vk::Device,
14483
0
        p_create_info: *const vk::RenderPassCreateInfo2,
14484
0
        p_allocator: *const vk::AllocationCallbacks,
14485
0
        p_render_pass: *mut vk::RenderPass,
14486
0
    ) -> vk::Result {
14487
0
        let global = Self::instance();
14488
0
        // vkCreateRenderPass2
14489
0
        let device_info = global.get_device_info(device).unwrap();
14490
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14491
0
        let layer_result = device_info
14492
0
            .customized_info
14493
0
            .borrow()
14494
0
            .hooks()
14495
0
            .create_render_pass2(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14496
0
                p_allocator.as_ref()
14497
0
            });
14498
0
        match layer_result {
14499
0
            LayerResult::Handled(res) => match res {
14500
0
                Ok(res) => {
14501
0
                    *unsafe { p_render_pass.as_mut() }.unwrap() = res;
14502
0
                    vk::Result::SUCCESS
14503
                }
14504
0
                Err(e) => e,
14505
            },
14506
            LayerResult::Unhandled => unsafe {
14507
0
                (dispatch_table.create_render_pass2)(
14508
0
                    device,
14509
0
                    p_create_info,
14510
0
                    p_allocator,
14511
0
                    p_render_pass,
14512
0
                )
14513
            },
14514
        }
14515
0
    }
14516
0
    extern "system" fn cmd_begin_render_pass2(
14517
0
        command_buffer: vk::CommandBuffer,
14518
0
        p_render_pass_begin: *const vk::RenderPassBeginInfo,
14519
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14520
0
    ) {
14521
0
        let global = Self::instance();
14522
0
        // vkCmdBeginRenderPass2
14523
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14524
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14525
0
        let layer_result = device_info
14526
0
            .customized_info
14527
0
            .borrow()
14528
0
            .hooks()
14529
0
            .cmd_begin_render_pass2(
14530
0
                command_buffer,
14531
0
                unsafe { p_render_pass_begin.as_ref() }.unwrap(),
14532
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14533
0
            );
14534
0
        match layer_result {
14535
0
            LayerResult::Handled(res) => res,
14536
            LayerResult::Unhandled => unsafe {
14537
0
                (dispatch_table.cmd_begin_render_pass2)(
14538
0
                    command_buffer,
14539
0
                    p_render_pass_begin,
14540
0
                    p_subpass_begin_info,
14541
0
                )
14542
            },
14543
        }
14544
0
    }
14545
0
    extern "system" fn cmd_next_subpass2(
14546
0
        command_buffer: vk::CommandBuffer,
14547
0
        p_subpass_begin_info: *const vk::SubpassBeginInfo,
14548
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14549
0
    ) {
14550
0
        let global = Self::instance();
14551
0
        // vkCmdNextSubpass2
14552
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14553
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14554
0
        let layer_result = device_info
14555
0
            .customized_info
14556
0
            .borrow()
14557
0
            .hooks()
14558
0
            .cmd_next_subpass2(
14559
0
                command_buffer,
14560
0
                unsafe { p_subpass_begin_info.as_ref() }.unwrap(),
14561
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14562
0
            );
14563
0
        match layer_result {
14564
0
            LayerResult::Handled(res) => res,
14565
            LayerResult::Unhandled => unsafe {
14566
0
                (dispatch_table.cmd_next_subpass2)(
14567
0
                    command_buffer,
14568
0
                    p_subpass_begin_info,
14569
0
                    p_subpass_end_info,
14570
0
                )
14571
            },
14572
        }
14573
0
    }
14574
0
    extern "system" fn cmd_end_render_pass2(
14575
0
        command_buffer: vk::CommandBuffer,
14576
0
        p_subpass_end_info: *const vk::SubpassEndInfo,
14577
0
    ) {
14578
0
        let global = Self::instance();
14579
0
        // vkCmdEndRenderPass2
14580
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14581
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14582
0
        let layer_result = device_info
14583
0
            .customized_info
14584
0
            .borrow()
14585
0
            .hooks()
14586
0
            .cmd_end_render_pass2(
14587
0
                command_buffer,
14588
0
                unsafe { p_subpass_end_info.as_ref() }.unwrap(),
14589
0
            );
14590
0
        match layer_result {
14591
0
            LayerResult::Handled(res) => res,
14592
            LayerResult::Unhandled => unsafe {
14593
0
                (dispatch_table.cmd_end_render_pass2)(command_buffer, p_subpass_end_info)
14594
            },
14595
        }
14596
0
    }
14597
0
    extern "system" fn reset_query_pool(
14598
0
        device: vk::Device,
14599
0
        query_pool: vk::QueryPool,
14600
0
        first_query: u32,
14601
0
        query_count: u32,
14602
0
    ) {
14603
0
        let global = Self::instance();
14604
0
        // vkResetQueryPool
14605
0
        let device_info = global.get_device_info(device).unwrap();
14606
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14607
0
        let layer_result = device_info
14608
0
            .customized_info
14609
0
            .borrow()
14610
0
            .hooks()
14611
0
            .reset_query_pool(query_pool, first_query, query_count);
14612
0
        match layer_result {
14613
0
            LayerResult::Handled(res) => res,
14614
            LayerResult::Unhandled => unsafe {
14615
0
                (dispatch_table.reset_query_pool)(device, query_pool, first_query, query_count)
14616
            },
14617
        }
14618
0
    }
14619
0
    extern "system" fn get_semaphore_counter_value(
14620
0
        device: vk::Device,
14621
0
        semaphore: vk::Semaphore,
14622
0
        p_value: *mut u64,
14623
0
    ) -> vk::Result {
14624
0
        let global = Self::instance();
14625
0
        // vkGetSemaphoreCounterValue
14626
0
        let device_info = global.get_device_info(device).unwrap();
14627
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14628
0
        let layer_result = device_info
14629
0
            .customized_info
14630
0
            .borrow()
14631
0
            .hooks()
14632
0
            .get_semaphore_counter_value(semaphore);
14633
0
        match layer_result {
14634
0
            LayerResult::Handled(res) => match res {
14635
0
                Ok(res) => {
14636
0
                    *unsafe { p_value.as_mut() }.unwrap() = res;
14637
0
                    vk::Result::SUCCESS
14638
                }
14639
0
                Err(e) => e,
14640
            },
14641
            LayerResult::Unhandled => unsafe {
14642
0
                (dispatch_table.get_semaphore_counter_value)(device, semaphore, p_value)
14643
            },
14644
        }
14645
0
    }
14646
0
    extern "system" fn wait_semaphores(
14647
0
        device: vk::Device,
14648
0
        p_wait_info: *const vk::SemaphoreWaitInfo,
14649
0
        timeout: u64,
14650
0
    ) -> vk::Result {
14651
0
        let global = Self::instance();
14652
0
        // vkWaitSemaphores
14653
0
        let device_info = global.get_device_info(device).unwrap();
14654
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14655
0
        let layer_result = device_info
14656
0
            .customized_info
14657
0
            .borrow()
14658
0
            .hooks()
14659
0
            .wait_semaphores(unsafe { p_wait_info.as_ref() }.unwrap(), timeout);
14660
0
        match layer_result {
14661
0
            LayerResult::Handled(res) => match res {
14662
0
                Ok(()) => vk::Result::SUCCESS,
14663
0
                Err(e) => e,
14664
            },
14665
            LayerResult::Unhandled => unsafe {
14666
0
                (dispatch_table.wait_semaphores)(device, p_wait_info, timeout)
14667
            },
14668
        }
14669
0
    }
14670
0
    extern "system" fn signal_semaphore(
14671
0
        device: vk::Device,
14672
0
        p_signal_info: *const vk::SemaphoreSignalInfo,
14673
0
    ) -> vk::Result {
14674
0
        let global = Self::instance();
14675
0
        // vkSignalSemaphore
14676
0
        let device_info = global.get_device_info(device).unwrap();
14677
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14678
0
        let layer_result = device_info
14679
0
            .customized_info
14680
0
            .borrow()
14681
0
            .hooks()
14682
0
            .signal_semaphore(unsafe { p_signal_info.as_ref() }.unwrap());
14683
0
        match layer_result {
14684
0
            LayerResult::Handled(res) => match res {
14685
0
                Ok(()) => vk::Result::SUCCESS,
14686
0
                Err(e) => e,
14687
            },
14688
            LayerResult::Unhandled => unsafe {
14689
0
                (dispatch_table.signal_semaphore)(device, p_signal_info)
14690
            },
14691
        }
14692
0
    }
14693
0
    extern "system" fn get_buffer_device_address(
14694
0
        device: vk::Device,
14695
0
        p_info: *const vk::BufferDeviceAddressInfo,
14696
0
    ) -> vk::DeviceAddress {
14697
0
        let global = Self::instance();
14698
0
        // vkGetBufferDeviceAddress
14699
0
        let device_info = global.get_device_info(device).unwrap();
14700
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14701
0
        let layer_result = device_info
14702
0
            .customized_info
14703
0
            .borrow()
14704
0
            .hooks()
14705
0
            .get_buffer_device_address(unsafe { p_info.as_ref() }.unwrap());
14706
0
        match layer_result {
14707
0
            LayerResult::Handled(res) => res,
14708
            LayerResult::Unhandled => unsafe {
14709
0
                (dispatch_table.get_buffer_device_address)(device, p_info)
14710
            },
14711
        }
14712
0
    }
14713
0
    extern "system" fn get_buffer_opaque_capture_address(
14714
0
        device: vk::Device,
14715
0
        p_info: *const vk::BufferDeviceAddressInfo,
14716
0
    ) -> u64 {
14717
0
        let global = Self::instance();
14718
0
        // vkGetBufferOpaqueCaptureAddress
14719
0
        let device_info = global.get_device_info(device).unwrap();
14720
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14721
0
        let layer_result = device_info
14722
0
            .customized_info
14723
0
            .borrow()
14724
0
            .hooks()
14725
0
            .get_buffer_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14726
0
        match layer_result {
14727
0
            LayerResult::Handled(res) => res,
14728
            LayerResult::Unhandled => unsafe {
14729
0
                (dispatch_table.get_buffer_opaque_capture_address)(device, p_info)
14730
            },
14731
        }
14732
0
    }
14733
0
    extern "system" fn get_device_memory_opaque_capture_address(
14734
0
        device: vk::Device,
14735
0
        p_info: *const vk::DeviceMemoryOpaqueCaptureAddressInfo,
14736
0
    ) -> u64 {
14737
0
        let global = Self::instance();
14738
0
        // vkGetDeviceMemoryOpaqueCaptureAddress
14739
0
        let device_info = global.get_device_info(device).unwrap();
14740
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_2();
14741
0
        let layer_result = device_info
14742
0
            .customized_info
14743
0
            .borrow()
14744
0
            .hooks()
14745
0
            .get_device_memory_opaque_capture_address(unsafe { p_info.as_ref() }.unwrap());
14746
0
        match layer_result {
14747
0
            LayerResult::Handled(res) => res,
14748
            LayerResult::Unhandled => unsafe {
14749
0
                (dispatch_table.get_device_memory_opaque_capture_address)(device, p_info)
14750
            },
14751
        }
14752
0
    }
14753
0
    extern "system" fn create_private_data_slot(
14754
0
        device: vk::Device,
14755
0
        p_create_info: *const vk::PrivateDataSlotCreateInfo,
14756
0
        p_allocator: *const vk::AllocationCallbacks,
14757
0
        p_private_data_slot: *mut vk::PrivateDataSlot,
14758
0
    ) -> vk::Result {
14759
0
        let global = Self::instance();
14760
0
        // vkCreatePrivateDataSlot
14761
0
        let device_info = global.get_device_info(device).unwrap();
14762
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14763
0
        let layer_result = device_info
14764
0
            .customized_info
14765
0
            .borrow()
14766
0
            .hooks()
14767
0
            .create_private_data_slot(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
14768
0
                p_allocator.as_ref()
14769
0
            });
14770
0
        match layer_result {
14771
0
            LayerResult::Handled(res) => match res {
14772
0
                Ok(res) => {
14773
0
                    *unsafe { p_private_data_slot.as_mut() }.unwrap() = res;
14774
0
                    vk::Result::SUCCESS
14775
                }
14776
0
                Err(e) => e,
14777
            },
14778
            LayerResult::Unhandled => unsafe {
14779
0
                (dispatch_table.create_private_data_slot)(
14780
0
                    device,
14781
0
                    p_create_info,
14782
0
                    p_allocator,
14783
0
                    p_private_data_slot,
14784
0
                )
14785
            },
14786
        }
14787
0
    }
14788
0
    extern "system" fn destroy_private_data_slot(
14789
0
        device: vk::Device,
14790
0
        private_data_slot: vk::PrivateDataSlot,
14791
0
        p_allocator: *const vk::AllocationCallbacks,
14792
0
    ) {
14793
0
        let global = Self::instance();
14794
0
        // vkDestroyPrivateDataSlot
14795
0
        let device_info = global.get_device_info(device).unwrap();
14796
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14797
0
        let layer_result = device_info
14798
0
            .customized_info
14799
0
            .borrow()
14800
0
            .hooks()
14801
0
            .destroy_private_data_slot(private_data_slot, unsafe { p_allocator.as_ref() });
14802
0
        match layer_result {
14803
0
            LayerResult::Handled(res) => res,
14804
            LayerResult::Unhandled => unsafe {
14805
0
                (dispatch_table.destroy_private_data_slot)(device, private_data_slot, p_allocator)
14806
            },
14807
        }
14808
0
    }
14809
0
    extern "system" fn set_private_data(
14810
0
        device: vk::Device,
14811
0
        object_type: vk::ObjectType,
14812
0
        object_handle: u64,
14813
0
        private_data_slot: vk::PrivateDataSlot,
14814
0
        data: u64,
14815
0
    ) -> vk::Result {
14816
0
        let global = Self::instance();
14817
0
        // vkSetPrivateData
14818
0
        let device_info = global.get_device_info(device).unwrap();
14819
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14820
0
        let layer_result = device_info
14821
0
            .customized_info
14822
0
            .borrow()
14823
0
            .hooks()
14824
0
            .set_private_data(object_type, object_handle, private_data_slot, data);
14825
0
        match layer_result {
14826
0
            LayerResult::Handled(res) => match res {
14827
0
                Ok(()) => vk::Result::SUCCESS,
14828
0
                Err(e) => e,
14829
            },
14830
            LayerResult::Unhandled => unsafe {
14831
0
                (dispatch_table.set_private_data)(
14832
0
                    device,
14833
0
                    object_type,
14834
0
                    object_handle,
14835
0
                    private_data_slot,
14836
0
                    data,
14837
0
                )
14838
            },
14839
        }
14840
0
    }
14841
0
    extern "system" fn get_private_data(
14842
0
        device: vk::Device,
14843
0
        object_type: vk::ObjectType,
14844
0
        object_handle: u64,
14845
0
        private_data_slot: vk::PrivateDataSlot,
14846
0
        p_data: *mut u64,
14847
0
    ) {
14848
0
        let global = Self::instance();
14849
0
        // vkGetPrivateData
14850
0
        let device_info = global.get_device_info(device).unwrap();
14851
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14852
0
        let layer_result = device_info
14853
0
            .customized_info
14854
0
            .borrow()
14855
0
            .hooks()
14856
0
            .get_private_data(object_type, object_handle, private_data_slot);
14857
0
        match layer_result {
14858
0
            LayerResult::Handled(res) => {
14859
0
                *unsafe { p_data.as_mut() }.unwrap() = res;
14860
0
            }
14861
            LayerResult::Unhandled => unsafe {
14862
0
                (dispatch_table.get_private_data)(
14863
0
                    device,
14864
0
                    object_type,
14865
0
                    object_handle,
14866
0
                    private_data_slot,
14867
0
                    p_data,
14868
0
                )
14869
            },
14870
        }
14871
0
    }
14872
0
    extern "system" fn cmd_set_event2(
14873
0
        command_buffer: vk::CommandBuffer,
14874
0
        event: vk::Event,
14875
0
        p_dependency_info: *const vk::DependencyInfo,
14876
0
    ) {
14877
0
        let global = Self::instance();
14878
0
        // vkCmdSetEvent2
14879
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14880
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14881
0
        let layer_result = device_info.customized_info.borrow().hooks().cmd_set_event2(
14882
0
            command_buffer,
14883
0
            event,
14884
0
            unsafe { p_dependency_info.as_ref() }.unwrap(),
14885
0
        );
14886
0
        match layer_result {
14887
0
            LayerResult::Handled(res) => res,
14888
            LayerResult::Unhandled => unsafe {
14889
0
                (dispatch_table.cmd_set_event2)(command_buffer, event, p_dependency_info)
14890
            },
14891
        }
14892
0
    }
14893
0
    extern "system" fn cmd_reset_event2(
14894
0
        command_buffer: vk::CommandBuffer,
14895
0
        event: vk::Event,
14896
0
        stage_mask: vk::PipelineStageFlags2,
14897
0
    ) {
14898
0
        let global = Self::instance();
14899
0
        // vkCmdResetEvent2
14900
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14901
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14902
0
        let layer_result = device_info
14903
0
            .customized_info
14904
0
            .borrow()
14905
0
            .hooks()
14906
0
            .cmd_reset_event2(command_buffer, event, stage_mask);
14907
0
        match layer_result {
14908
0
            LayerResult::Handled(res) => res,
14909
            LayerResult::Unhandled => unsafe {
14910
0
                (dispatch_table.cmd_reset_event2)(command_buffer, event, stage_mask)
14911
            },
14912
        }
14913
0
    }
14914
0
    extern "system" fn cmd_wait_events2(
14915
0
        command_buffer: vk::CommandBuffer,
14916
0
        event_count: u32,
14917
0
        p_events: *const vk::Event,
14918
0
        p_dependency_infos: *const vk::DependencyInfo,
14919
0
    ) {
14920
0
        let global = Self::instance();
14921
0
        // vkCmdWaitEvents2
14922
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14923
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14924
0
        let layer_result = device_info
14925
0
            .customized_info
14926
0
            .borrow()
14927
0
            .hooks()
14928
0
            .cmd_wait_events2(
14929
0
                command_buffer,
14930
0
                unsafe { slice_from_raw_parts(p_events, event_count) },
14931
0
                unsafe { slice_from_raw_parts(p_dependency_infos, event_count) },
14932
0
            );
14933
0
        match layer_result {
14934
0
            LayerResult::Handled(res) => res,
14935
            LayerResult::Unhandled => unsafe {
14936
0
                (dispatch_table.cmd_wait_events2)(
14937
0
                    command_buffer,
14938
0
                    event_count,
14939
0
                    p_events,
14940
0
                    p_dependency_infos,
14941
0
                )
14942
            },
14943
        }
14944
0
    }
14945
0
    extern "system" fn cmd_pipeline_barrier2(
14946
0
        command_buffer: vk::CommandBuffer,
14947
0
        p_dependency_info: *const vk::DependencyInfo,
14948
0
    ) {
14949
0
        let global = Self::instance();
14950
0
        // vkCmdPipelineBarrier2
14951
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14952
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14953
0
        let layer_result = device_info
14954
0
            .customized_info
14955
0
            .borrow()
14956
0
            .hooks()
14957
0
            .cmd_pipeline_barrier2(
14958
0
                command_buffer,
14959
0
                unsafe { p_dependency_info.as_ref() }.unwrap(),
14960
0
            );
14961
0
        match layer_result {
14962
0
            LayerResult::Handled(res) => res,
14963
            LayerResult::Unhandled => unsafe {
14964
0
                (dispatch_table.cmd_pipeline_barrier2)(command_buffer, p_dependency_info)
14965
            },
14966
        }
14967
0
    }
14968
0
    extern "system" fn cmd_write_timestamp2(
14969
0
        command_buffer: vk::CommandBuffer,
14970
0
        stage: vk::PipelineStageFlags2,
14971
0
        query_pool: vk::QueryPool,
14972
0
        query: u32,
14973
0
    ) {
14974
0
        let global = Self::instance();
14975
0
        // vkCmdWriteTimestamp2
14976
0
        let device_info = global.get_device_info(command_buffer).unwrap();
14977
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
14978
0
        let layer_result = device_info
14979
0
            .customized_info
14980
0
            .borrow()
14981
0
            .hooks()
14982
0
            .cmd_write_timestamp2(command_buffer, stage, query_pool, query);
14983
0
        match layer_result {
14984
0
            LayerResult::Handled(res) => res,
14985
            LayerResult::Unhandled => unsafe {
14986
0
                (dispatch_table.cmd_write_timestamp2)(command_buffer, stage, query_pool, query)
14987
            },
14988
        }
14989
0
    }
14990
0
    extern "system" fn queue_submit2(
14991
0
        queue: vk::Queue,
14992
0
        submit_count: u32,
14993
0
        p_submits: *const vk::SubmitInfo2,
14994
0
        fence: vk::Fence,
14995
0
    ) -> vk::Result {
14996
0
        let global = Self::instance();
14997
0
        // vkQueueSubmit2
14998
0
        let device_info = global.get_device_info(queue).unwrap();
14999
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15000
0
        let layer_result = device_info.customized_info.borrow().hooks().queue_submit2(
15001
0
            queue,
15002
0
            unsafe { slice_from_raw_parts(p_submits, submit_count) },
15003
0
            fence,
15004
0
        );
15005
0
        match layer_result {
15006
0
            LayerResult::Handled(res) => match res {
15007
0
                Ok(()) => vk::Result::SUCCESS,
15008
0
                Err(e) => e,
15009
            },
15010
            LayerResult::Unhandled => unsafe {
15011
0
                (dispatch_table.queue_submit2)(queue, submit_count, p_submits, fence)
15012
            },
15013
        }
15014
0
    }
15015
0
    extern "system" fn cmd_copy_buffer2(
15016
0
        command_buffer: vk::CommandBuffer,
15017
0
        p_copy_buffer_info: *const vk::CopyBufferInfo2,
15018
0
    ) {
15019
0
        let global = Self::instance();
15020
0
        // vkCmdCopyBuffer2
15021
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15022
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15023
0
        let layer_result = device_info
15024
0
            .customized_info
15025
0
            .borrow()
15026
0
            .hooks()
15027
0
            .cmd_copy_buffer2(
15028
0
                command_buffer,
15029
0
                unsafe { p_copy_buffer_info.as_ref() }.unwrap(),
15030
0
            );
15031
0
        match layer_result {
15032
0
            LayerResult::Handled(res) => res,
15033
            LayerResult::Unhandled => unsafe {
15034
0
                (dispatch_table.cmd_copy_buffer2)(command_buffer, p_copy_buffer_info)
15035
            },
15036
        }
15037
0
    }
15038
0
    extern "system" fn cmd_copy_image2(
15039
0
        command_buffer: vk::CommandBuffer,
15040
0
        p_copy_image_info: *const vk::CopyImageInfo2,
15041
0
    ) {
15042
0
        let global = Self::instance();
15043
0
        // vkCmdCopyImage2
15044
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15045
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15046
0
        let layer_result = device_info
15047
0
            .customized_info
15048
0
            .borrow()
15049
0
            .hooks()
15050
0
            .cmd_copy_image2(
15051
0
                command_buffer,
15052
0
                unsafe { p_copy_image_info.as_ref() }.unwrap(),
15053
0
            );
15054
0
        match layer_result {
15055
0
            LayerResult::Handled(res) => res,
15056
            LayerResult::Unhandled => unsafe {
15057
0
                (dispatch_table.cmd_copy_image2)(command_buffer, p_copy_image_info)
15058
            },
15059
        }
15060
0
    }
15061
0
    extern "system" fn cmd_copy_buffer_to_image2(
15062
0
        command_buffer: vk::CommandBuffer,
15063
0
        p_copy_buffer_to_image_info: *const vk::CopyBufferToImageInfo2,
15064
0
    ) {
15065
0
        let global = Self::instance();
15066
0
        // vkCmdCopyBufferToImage2
15067
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15068
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15069
0
        let layer_result = device_info
15070
0
            .customized_info
15071
0
            .borrow()
15072
0
            .hooks()
15073
0
            .cmd_copy_buffer_to_image2(
15074
0
                command_buffer,
15075
0
                unsafe { p_copy_buffer_to_image_info.as_ref() }.unwrap(),
15076
0
            );
15077
0
        match layer_result {
15078
0
            LayerResult::Handled(res) => res,
15079
            LayerResult::Unhandled => unsafe {
15080
0
                (dispatch_table.cmd_copy_buffer_to_image2)(
15081
0
                    command_buffer,
15082
0
                    p_copy_buffer_to_image_info,
15083
0
                )
15084
            },
15085
        }
15086
0
    }
15087
0
    extern "system" fn cmd_copy_image_to_buffer2(
15088
0
        command_buffer: vk::CommandBuffer,
15089
0
        p_copy_image_to_buffer_info: *const vk::CopyImageToBufferInfo2,
15090
0
    ) {
15091
0
        let global = Self::instance();
15092
0
        // vkCmdCopyImageToBuffer2
15093
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15094
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15095
0
        let layer_result = device_info
15096
0
            .customized_info
15097
0
            .borrow()
15098
0
            .hooks()
15099
0
            .cmd_copy_image_to_buffer2(
15100
0
                command_buffer,
15101
0
                unsafe { p_copy_image_to_buffer_info.as_ref() }.unwrap(),
15102
0
            );
15103
0
        match layer_result {
15104
0
            LayerResult::Handled(res) => res,
15105
            LayerResult::Unhandled => unsafe {
15106
0
                (dispatch_table.cmd_copy_image_to_buffer2)(
15107
0
                    command_buffer,
15108
0
                    p_copy_image_to_buffer_info,
15109
0
                )
15110
            },
15111
        }
15112
0
    }
15113
0
    extern "system" fn cmd_blit_image2(
15114
0
        command_buffer: vk::CommandBuffer,
15115
0
        p_blit_image_info: *const vk::BlitImageInfo2,
15116
0
    ) {
15117
0
        let global = Self::instance();
15118
0
        // vkCmdBlitImage2
15119
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15120
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15121
0
        let layer_result = device_info
15122
0
            .customized_info
15123
0
            .borrow()
15124
0
            .hooks()
15125
0
            .cmd_blit_image2(
15126
0
                command_buffer,
15127
0
                unsafe { p_blit_image_info.as_ref() }.unwrap(),
15128
0
            );
15129
0
        match layer_result {
15130
0
            LayerResult::Handled(res) => res,
15131
            LayerResult::Unhandled => unsafe {
15132
0
                (dispatch_table.cmd_blit_image2)(command_buffer, p_blit_image_info)
15133
            },
15134
        }
15135
0
    }
15136
0
    extern "system" fn cmd_resolve_image2(
15137
0
        command_buffer: vk::CommandBuffer,
15138
0
        p_resolve_image_info: *const vk::ResolveImageInfo2,
15139
0
    ) {
15140
0
        let global = Self::instance();
15141
0
        // vkCmdResolveImage2
15142
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15143
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15144
0
        let layer_result = device_info
15145
0
            .customized_info
15146
0
            .borrow()
15147
0
            .hooks()
15148
0
            .cmd_resolve_image2(
15149
0
                command_buffer,
15150
0
                unsafe { p_resolve_image_info.as_ref() }.unwrap(),
15151
0
            );
15152
0
        match layer_result {
15153
0
            LayerResult::Handled(res) => res,
15154
            LayerResult::Unhandled => unsafe {
15155
0
                (dispatch_table.cmd_resolve_image2)(command_buffer, p_resolve_image_info)
15156
            },
15157
        }
15158
0
    }
15159
0
    extern "system" fn cmd_begin_rendering(
15160
0
        command_buffer: vk::CommandBuffer,
15161
0
        p_rendering_info: *const vk::RenderingInfo,
15162
0
    ) {
15163
0
        let global = Self::instance();
15164
0
        // vkCmdBeginRendering
15165
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15166
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15167
0
        let layer_result = device_info
15168
0
            .customized_info
15169
0
            .borrow()
15170
0
            .hooks()
15171
0
            .cmd_begin_rendering(
15172
0
                command_buffer,
15173
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
15174
0
            );
15175
0
        match layer_result {
15176
0
            LayerResult::Handled(res) => res,
15177
            LayerResult::Unhandled => unsafe {
15178
0
                (dispatch_table.cmd_begin_rendering)(command_buffer, p_rendering_info)
15179
            },
15180
        }
15181
0
    }
15182
0
    extern "system" fn cmd_end_rendering(command_buffer: vk::CommandBuffer) {
15183
0
        let global = Self::instance();
15184
0
        // vkCmdEndRendering
15185
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15186
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15187
0
        let layer_result = device_info
15188
0
            .customized_info
15189
0
            .borrow()
15190
0
            .hooks()
15191
0
            .cmd_end_rendering(command_buffer);
15192
0
        match layer_result {
15193
0
            LayerResult::Handled(res) => res,
15194
0
            LayerResult::Unhandled => unsafe { (dispatch_table.cmd_end_rendering)(command_buffer) },
15195
        }
15196
0
    }
15197
0
    extern "system" fn cmd_set_cull_mode(
15198
0
        command_buffer: vk::CommandBuffer,
15199
0
        cull_mode: vk::CullModeFlags,
15200
0
    ) {
15201
0
        let global = Self::instance();
15202
0
        // vkCmdSetCullMode
15203
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15204
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15205
0
        let layer_result = device_info
15206
0
            .customized_info
15207
0
            .borrow()
15208
0
            .hooks()
15209
0
            .cmd_set_cull_mode(command_buffer, cull_mode);
15210
0
        match layer_result {
15211
0
            LayerResult::Handled(res) => res,
15212
            LayerResult::Unhandled => unsafe {
15213
0
                (dispatch_table.cmd_set_cull_mode)(command_buffer, cull_mode)
15214
            },
15215
        }
15216
0
    }
15217
0
    extern "system" fn cmd_set_front_face(
15218
0
        command_buffer: vk::CommandBuffer,
15219
0
        front_face: vk::FrontFace,
15220
0
    ) {
15221
0
        let global = Self::instance();
15222
0
        // vkCmdSetFrontFace
15223
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15224
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15225
0
        let layer_result = device_info
15226
0
            .customized_info
15227
0
            .borrow()
15228
0
            .hooks()
15229
0
            .cmd_set_front_face(command_buffer, front_face);
15230
0
        match layer_result {
15231
0
            LayerResult::Handled(res) => res,
15232
            LayerResult::Unhandled => unsafe {
15233
0
                (dispatch_table.cmd_set_front_face)(command_buffer, front_face)
15234
            },
15235
        }
15236
0
    }
15237
0
    extern "system" fn cmd_set_primitive_topology(
15238
0
        command_buffer: vk::CommandBuffer,
15239
0
        primitive_topology: vk::PrimitiveTopology,
15240
0
    ) {
15241
0
        let global = Self::instance();
15242
0
        // vkCmdSetPrimitiveTopology
15243
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15244
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15245
0
        let layer_result = device_info
15246
0
            .customized_info
15247
0
            .borrow()
15248
0
            .hooks()
15249
0
            .cmd_set_primitive_topology(command_buffer, primitive_topology);
15250
0
        match layer_result {
15251
0
            LayerResult::Handled(res) => res,
15252
            LayerResult::Unhandled => unsafe {
15253
0
                (dispatch_table.cmd_set_primitive_topology)(command_buffer, primitive_topology)
15254
            },
15255
        }
15256
0
    }
15257
0
    extern "system" fn cmd_set_viewport_with_count(
15258
0
        command_buffer: vk::CommandBuffer,
15259
0
        viewport_count: u32,
15260
0
        p_viewports: *const vk::Viewport,
15261
0
    ) {
15262
0
        let global = Self::instance();
15263
0
        // vkCmdSetViewportWithCount
15264
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15265
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15266
0
        let layer_result = device_info
15267
0
            .customized_info
15268
0
            .borrow()
15269
0
            .hooks()
15270
0
            .cmd_set_viewport_with_count(command_buffer, unsafe {
15271
0
                slice_from_raw_parts(p_viewports, viewport_count)
15272
0
            });
15273
0
        match layer_result {
15274
0
            LayerResult::Handled(res) => res,
15275
            LayerResult::Unhandled => unsafe {
15276
0
                (dispatch_table.cmd_set_viewport_with_count)(
15277
0
                    command_buffer,
15278
0
                    viewport_count,
15279
0
                    p_viewports,
15280
0
                )
15281
            },
15282
        }
15283
0
    }
15284
0
    extern "system" fn cmd_set_scissor_with_count(
15285
0
        command_buffer: vk::CommandBuffer,
15286
0
        scissor_count: u32,
15287
0
        p_scissors: *const vk::Rect2D,
15288
0
    ) {
15289
0
        let global = Self::instance();
15290
0
        // vkCmdSetScissorWithCount
15291
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15292
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15293
0
        let layer_result = device_info
15294
0
            .customized_info
15295
0
            .borrow()
15296
0
            .hooks()
15297
0
            .cmd_set_scissor_with_count(command_buffer, unsafe {
15298
0
                slice_from_raw_parts(p_scissors, scissor_count)
15299
0
            });
15300
0
        match layer_result {
15301
0
            LayerResult::Handled(res) => res,
15302
            LayerResult::Unhandled => unsafe {
15303
0
                (dispatch_table.cmd_set_scissor_with_count)(
15304
0
                    command_buffer,
15305
0
                    scissor_count,
15306
0
                    p_scissors,
15307
0
                )
15308
            },
15309
        }
15310
0
    }
15311
0
    extern "system" fn cmd_bind_vertex_buffers2(
15312
0
        command_buffer: vk::CommandBuffer,
15313
0
        first_binding: u32,
15314
0
        binding_count: u32,
15315
0
        p_buffers: *const vk::Buffer,
15316
0
        p_offsets: *const vk::DeviceSize,
15317
0
        p_sizes: *const vk::DeviceSize,
15318
0
        p_strides: *const vk::DeviceSize,
15319
0
    ) {
15320
0
        let global = Self::instance();
15321
0
        // vkCmdBindVertexBuffers2
15322
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15323
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15324
0
        let layer_result = device_info
15325
0
            .customized_info
15326
0
            .borrow()
15327
0
            .hooks()
15328
0
            .cmd_bind_vertex_buffers2(
15329
0
                command_buffer,
15330
0
                first_binding,
15331
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
15332
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
15333
0
                unsafe { maybe_slice_from_raw_parts(p_sizes, binding_count) },
15334
0
                unsafe { maybe_slice_from_raw_parts(p_strides, binding_count) },
15335
0
            );
15336
0
        match layer_result {
15337
0
            LayerResult::Handled(res) => res,
15338
            LayerResult::Unhandled => unsafe {
15339
0
                (dispatch_table.cmd_bind_vertex_buffers2)(
15340
0
                    command_buffer,
15341
0
                    first_binding,
15342
0
                    binding_count,
15343
0
                    p_buffers,
15344
0
                    p_offsets,
15345
0
                    p_sizes,
15346
0
                    p_strides,
15347
0
                )
15348
            },
15349
        }
15350
0
    }
15351
0
    extern "system" fn cmd_set_depth_test_enable(
15352
0
        command_buffer: vk::CommandBuffer,
15353
0
        depth_test_enable: vk::Bool32,
15354
0
    ) {
15355
0
        let global = Self::instance();
15356
0
        // vkCmdSetDepthTestEnable
15357
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15358
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15359
0
        let layer_result = device_info
15360
0
            .customized_info
15361
0
            .borrow()
15362
0
            .hooks()
15363
0
            .cmd_set_depth_test_enable(command_buffer, depth_test_enable == vk::TRUE);
15364
0
        match layer_result {
15365
0
            LayerResult::Handled(res) => res,
15366
            LayerResult::Unhandled => unsafe {
15367
0
                (dispatch_table.cmd_set_depth_test_enable)(command_buffer, depth_test_enable)
15368
            },
15369
        }
15370
0
    }
15371
0
    extern "system" fn cmd_set_depth_write_enable(
15372
0
        command_buffer: vk::CommandBuffer,
15373
0
        depth_write_enable: vk::Bool32,
15374
0
    ) {
15375
0
        let global = Self::instance();
15376
0
        // vkCmdSetDepthWriteEnable
15377
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15378
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15379
0
        let layer_result = device_info
15380
0
            .customized_info
15381
0
            .borrow()
15382
0
            .hooks()
15383
0
            .cmd_set_depth_write_enable(command_buffer, depth_write_enable == vk::TRUE);
15384
0
        match layer_result {
15385
0
            LayerResult::Handled(res) => res,
15386
            LayerResult::Unhandled => unsafe {
15387
0
                (dispatch_table.cmd_set_depth_write_enable)(command_buffer, depth_write_enable)
15388
            },
15389
        }
15390
0
    }
15391
0
    extern "system" fn cmd_set_depth_compare_op(
15392
0
        command_buffer: vk::CommandBuffer,
15393
0
        depth_compare_op: vk::CompareOp,
15394
0
    ) {
15395
0
        let global = Self::instance();
15396
0
        // vkCmdSetDepthCompareOp
15397
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15398
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15399
0
        let layer_result = device_info
15400
0
            .customized_info
15401
0
            .borrow()
15402
0
            .hooks()
15403
0
            .cmd_set_depth_compare_op(command_buffer, depth_compare_op);
15404
0
        match layer_result {
15405
0
            LayerResult::Handled(res) => res,
15406
            LayerResult::Unhandled => unsafe {
15407
0
                (dispatch_table.cmd_set_depth_compare_op)(command_buffer, depth_compare_op)
15408
            },
15409
        }
15410
0
    }
15411
0
    extern "system" fn cmd_set_depth_bounds_test_enable(
15412
0
        command_buffer: vk::CommandBuffer,
15413
0
        depth_bounds_test_enable: vk::Bool32,
15414
0
    ) {
15415
0
        let global = Self::instance();
15416
0
        // vkCmdSetDepthBoundsTestEnable
15417
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15418
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15419
0
        let layer_result = device_info
15420
0
            .customized_info
15421
0
            .borrow()
15422
0
            .hooks()
15423
0
            .cmd_set_depth_bounds_test_enable(command_buffer, depth_bounds_test_enable == vk::TRUE);
15424
0
        match layer_result {
15425
0
            LayerResult::Handled(res) => res,
15426
            LayerResult::Unhandled => unsafe {
15427
0
                (dispatch_table.cmd_set_depth_bounds_test_enable)(
15428
0
                    command_buffer,
15429
0
                    depth_bounds_test_enable,
15430
0
                )
15431
            },
15432
        }
15433
0
    }
15434
0
    extern "system" fn cmd_set_stencil_test_enable(
15435
0
        command_buffer: vk::CommandBuffer,
15436
0
        stencil_test_enable: vk::Bool32,
15437
0
    ) {
15438
0
        let global = Self::instance();
15439
0
        // vkCmdSetStencilTestEnable
15440
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15441
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15442
0
        let layer_result = device_info
15443
0
            .customized_info
15444
0
            .borrow()
15445
0
            .hooks()
15446
0
            .cmd_set_stencil_test_enable(command_buffer, stencil_test_enable == vk::TRUE);
15447
0
        match layer_result {
15448
0
            LayerResult::Handled(res) => res,
15449
            LayerResult::Unhandled => unsafe {
15450
0
                (dispatch_table.cmd_set_stencil_test_enable)(command_buffer, stencil_test_enable)
15451
            },
15452
        }
15453
0
    }
15454
0
    extern "system" fn cmd_set_stencil_op(
15455
0
        command_buffer: vk::CommandBuffer,
15456
0
        face_mask: vk::StencilFaceFlags,
15457
0
        fail_op: vk::StencilOp,
15458
0
        pass_op: vk::StencilOp,
15459
0
        depth_fail_op: vk::StencilOp,
15460
0
        compare_op: vk::CompareOp,
15461
0
    ) {
15462
0
        let global = Self::instance();
15463
0
        // vkCmdSetStencilOp
15464
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15465
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15466
0
        let layer_result = device_info
15467
0
            .customized_info
15468
0
            .borrow()
15469
0
            .hooks()
15470
0
            .cmd_set_stencil_op(
15471
0
                command_buffer,
15472
0
                face_mask,
15473
0
                fail_op,
15474
0
                pass_op,
15475
0
                depth_fail_op,
15476
0
                compare_op,
15477
0
            );
15478
0
        match layer_result {
15479
0
            LayerResult::Handled(res) => res,
15480
            LayerResult::Unhandled => unsafe {
15481
0
                (dispatch_table.cmd_set_stencil_op)(
15482
0
                    command_buffer,
15483
0
                    face_mask,
15484
0
                    fail_op,
15485
0
                    pass_op,
15486
0
                    depth_fail_op,
15487
0
                    compare_op,
15488
0
                )
15489
            },
15490
        }
15491
0
    }
15492
0
    extern "system" fn cmd_set_rasterizer_discard_enable(
15493
0
        command_buffer: vk::CommandBuffer,
15494
0
        rasterizer_discard_enable: vk::Bool32,
15495
0
    ) {
15496
0
        let global = Self::instance();
15497
0
        // vkCmdSetRasterizerDiscardEnable
15498
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15499
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15500
0
        let layer_result = device_info
15501
0
            .customized_info
15502
0
            .borrow()
15503
0
            .hooks()
15504
0
            .cmd_set_rasterizer_discard_enable(
15505
0
                command_buffer,
15506
0
                rasterizer_discard_enable == vk::TRUE,
15507
0
            );
15508
0
        match layer_result {
15509
0
            LayerResult::Handled(res) => res,
15510
            LayerResult::Unhandled => unsafe {
15511
0
                (dispatch_table.cmd_set_rasterizer_discard_enable)(
15512
0
                    command_buffer,
15513
0
                    rasterizer_discard_enable,
15514
0
                )
15515
            },
15516
        }
15517
0
    }
15518
0
    extern "system" fn cmd_set_depth_bias_enable(
15519
0
        command_buffer: vk::CommandBuffer,
15520
0
        depth_bias_enable: vk::Bool32,
15521
0
    ) {
15522
0
        let global = Self::instance();
15523
0
        // vkCmdSetDepthBiasEnable
15524
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15525
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15526
0
        let layer_result = device_info
15527
0
            .customized_info
15528
0
            .borrow()
15529
0
            .hooks()
15530
0
            .cmd_set_depth_bias_enable(command_buffer, depth_bias_enable == vk::TRUE);
15531
0
        match layer_result {
15532
0
            LayerResult::Handled(res) => res,
15533
            LayerResult::Unhandled => unsafe {
15534
0
                (dispatch_table.cmd_set_depth_bias_enable)(command_buffer, depth_bias_enable)
15535
            },
15536
        }
15537
0
    }
15538
0
    extern "system" fn cmd_set_primitive_restart_enable(
15539
0
        command_buffer: vk::CommandBuffer,
15540
0
        primitive_restart_enable: vk::Bool32,
15541
0
    ) {
15542
0
        let global = Self::instance();
15543
0
        // vkCmdSetPrimitiveRestartEnable
15544
0
        let device_info = global.get_device_info(command_buffer).unwrap();
15545
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15546
0
        let layer_result = device_info
15547
0
            .customized_info
15548
0
            .borrow()
15549
0
            .hooks()
15550
0
            .cmd_set_primitive_restart_enable(command_buffer, primitive_restart_enable == vk::TRUE);
15551
0
        match layer_result {
15552
0
            LayerResult::Handled(res) => res,
15553
            LayerResult::Unhandled => unsafe {
15554
0
                (dispatch_table.cmd_set_primitive_restart_enable)(
15555
0
                    command_buffer,
15556
0
                    primitive_restart_enable,
15557
0
                )
15558
            },
15559
        }
15560
0
    }
15561
0
    extern "system" fn get_device_buffer_memory_requirements(
15562
0
        device: vk::Device,
15563
0
        p_info: *const vk::DeviceBufferMemoryRequirements,
15564
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15565
0
    ) {
15566
0
        let global = Self::instance();
15567
0
        // vkGetDeviceBufferMemoryRequirements
15568
0
        let device_info = global.get_device_info(device).unwrap();
15569
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15570
0
        let layer_result = device_info
15571
0
            .customized_info
15572
0
            .borrow()
15573
0
            .hooks()
15574
0
            .get_device_buffer_memory_requirements(
15575
0
                unsafe { p_info.as_ref() }.unwrap(),
15576
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
15577
0
            );
15578
0
        match layer_result {
15579
0
            LayerResult::Handled(res) => res,
15580
            LayerResult::Unhandled => unsafe {
15581
0
                (dispatch_table.get_device_buffer_memory_requirements)(
15582
0
                    device,
15583
0
                    p_info,
15584
0
                    p_memory_requirements,
15585
0
                )
15586
            },
15587
        }
15588
0
    }
15589
0
    extern "system" fn get_device_image_memory_requirements(
15590
0
        device: vk::Device,
15591
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15592
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
15593
0
    ) {
15594
0
        let global = Self::instance();
15595
0
        // vkGetDeviceImageMemoryRequirements
15596
0
        let device_info = global.get_device_info(device).unwrap();
15597
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15598
0
        let layer_result = device_info
15599
0
            .customized_info
15600
0
            .borrow()
15601
0
            .hooks()
15602
0
            .get_device_image_memory_requirements(
15603
0
                unsafe { p_info.as_ref() }.unwrap(),
15604
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
15605
0
            );
15606
0
        match layer_result {
15607
0
            LayerResult::Handled(res) => res,
15608
            LayerResult::Unhandled => unsafe {
15609
0
                (dispatch_table.get_device_image_memory_requirements)(
15610
0
                    device,
15611
0
                    p_info,
15612
0
                    p_memory_requirements,
15613
0
                )
15614
            },
15615
        }
15616
0
    }
15617
0
    extern "system" fn get_device_image_sparse_memory_requirements(
15618
0
        device: vk::Device,
15619
0
        p_info: *const vk::DeviceImageMemoryRequirements,
15620
0
        p_sparse_memory_requirement_count: *mut u32,
15621
0
        p_sparse_memory_requirements: *mut vk::SparseImageMemoryRequirements2,
15622
0
    ) {
15623
0
        let global = Self::instance();
15624
0
        // vkGetDeviceImageSparseMemoryRequirements
15625
0
        let device_info = global.get_device_info(device).unwrap();
15626
0
        let dispatch_table = &device_info.dispatch_table.core.fp_v1_3();
15627
0
        let layer_result = device_info
15628
0
            .customized_info
15629
0
            .borrow()
15630
0
            .hooks()
15631
0
            .get_device_image_sparse_memory_requirements(
15632
0
                unsafe { p_info.as_ref() }.unwrap(),
15633
0
                unsafe { ptr_as_uninit_mut(p_sparse_memory_requirement_count) }.unwrap(),
15634
0
                unsafe {
15635
0
                    maybe_uninit_slice_from_raw_parts_mut(
15636
0
                        p_sparse_memory_requirements,
15637
0
                        p_sparse_memory_requirement_count,
15638
0
                    )
15639
0
                },
15640
0
            );
15641
0
        match layer_result {
15642
0
            LayerResult::Handled(res) => res,
15643
            LayerResult::Unhandled => unsafe {
15644
0
                (dispatch_table.get_device_image_sparse_memory_requirements)(
15645
0
                    device,
15646
0
                    p_info,
15647
0
                    p_sparse_memory_requirement_count,
15648
0
                    p_sparse_memory_requirements,
15649
0
                )
15650
            },
15651
        }
15652
0
    }
15653
0
    extern "system" fn create_swapchain_khr(
15654
0
        device: vk::Device,
15655
0
        p_create_info: *const vk::SwapchainCreateInfoKHR,
15656
0
        p_allocator: *const vk::AllocationCallbacks,
15657
0
        p_swapchain: *mut vk::SwapchainKHR,
15658
0
    ) -> vk::Result {
15659
0
        let global = Self::instance();
15660
0
        // vkCreateSwapchainKHR
15661
0
        let device_info = global.get_device_info(device).unwrap();
15662
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15663
0
        let layer_result = device_info
15664
0
            .customized_info
15665
0
            .borrow()
15666
0
            .hooks()
15667
0
            .create_swapchain_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
15668
0
                p_allocator.as_ref()
15669
0
            });
15670
0
        match layer_result {
15671
0
            LayerResult::Handled(res) => match res {
15672
0
                Ok(res) => {
15673
0
                    *unsafe { p_swapchain.as_mut() }.unwrap() = res;
15674
0
                    vk::Result::SUCCESS
15675
                }
15676
0
                Err(e) => e,
15677
            },
15678
            LayerResult::Unhandled => unsafe {
15679
0
                (dispatch_table.create_swapchain_khr)(
15680
0
                    device,
15681
0
                    p_create_info,
15682
0
                    p_allocator,
15683
0
                    p_swapchain,
15684
0
                )
15685
            },
15686
        }
15687
0
    }
15688
1
    extern "system" fn destroy_swapchain_khr(
15689
1
        device: vk::Device,
15690
1
        swapchain: vk::SwapchainKHR,
15691
1
        p_allocator: *const vk::AllocationCallbacks,
15692
1
    ) {
15693
1
        let global = Self::instance();
15694
1
        // vkDestroySwapchainKHR
15695
1
        let device_info = global.get_device_info(device).unwrap();
15696
1
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15697
1
        let layer_result = device_info
15698
1
            .customized_info
15699
1
            .borrow()
15700
1
            .hooks()
15701
1
            .destroy_swapchain_khr(swapchain, unsafe { p_allocator.as_ref() });
15702
1
        match layer_result {
15703
1
            LayerResult::Handled(res) => res,
15704
            LayerResult::Unhandled => unsafe {
15705
0
                (dispatch_table.destroy_swapchain_khr)(device, swapchain, p_allocator)
15706
            },
15707
        }
15708
1
    }
15709
0
    extern "system" fn get_swapchain_images_khr(
15710
0
        device: vk::Device,
15711
0
        swapchain: vk::SwapchainKHR,
15712
0
        p_swapchain_image_count: *mut u32,
15713
0
        p_swapchain_images: *mut vk::Image,
15714
0
    ) -> vk::Result {
15715
0
        let global = Self::instance();
15716
0
        // vkGetSwapchainImagesKHR
15717
0
        let device_info = global.get_device_info(device).unwrap();
15718
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15719
0
        let layer_result = device_info
15720
0
            .customized_info
15721
0
            .borrow()
15722
0
            .hooks()
15723
0
            .get_swapchain_images_khr(swapchain);
15724
0
        match layer_result {
15725
0
            LayerResult::Handled(res) => match res {
15726
0
                Ok(res) => unsafe {
15727
0
                    fill_vk_out_array(
15728
0
                        &res,
15729
0
                        NonNull::new(p_swapchain_image_count).unwrap(),
15730
0
                        p_swapchain_images,
15731
0
                    )
15732
                },
15733
0
                Err(e) => e,
15734
            },
15735
            LayerResult::Unhandled => unsafe {
15736
0
                (dispatch_table.get_swapchain_images_khr)(
15737
0
                    device,
15738
0
                    swapchain,
15739
0
                    p_swapchain_image_count,
15740
0
                    p_swapchain_images,
15741
0
                )
15742
            },
15743
        }
15744
0
    }
15745
0
    extern "system" fn acquire_next_image_khr(
15746
0
        device: vk::Device,
15747
0
        swapchain: vk::SwapchainKHR,
15748
0
        timeout: u64,
15749
0
        semaphore: vk::Semaphore,
15750
0
        fence: vk::Fence,
15751
0
        p_image_index: *mut u32,
15752
0
    ) -> vk::Result {
15753
0
        let global = Self::instance();
15754
0
        // vkAcquireNextImageKHR
15755
0
        let device_info = global.get_device_info(device).unwrap();
15756
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15757
0
        let layer_result = device_info
15758
0
            .customized_info
15759
0
            .borrow()
15760
0
            .hooks()
15761
0
            .acquire_next_image_khr(swapchain, timeout, semaphore, fence);
15762
0
        match layer_result {
15763
0
            LayerResult::Handled(res) => match res {
15764
0
                Ok(res) => {
15765
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
15766
0
                    vk::Result::SUCCESS
15767
                }
15768
0
                Err(e) => e,
15769
            },
15770
            LayerResult::Unhandled => unsafe {
15771
0
                (dispatch_table.acquire_next_image_khr)(
15772
0
                    device,
15773
0
                    swapchain,
15774
0
                    timeout,
15775
0
                    semaphore,
15776
0
                    fence,
15777
0
                    p_image_index,
15778
0
                )
15779
            },
15780
        }
15781
0
    }
15782
0
    extern "system" fn queue_present_khr(
15783
0
        queue: vk::Queue,
15784
0
        p_present_info: *const vk::PresentInfoKHR,
15785
0
    ) -> vk::Result {
15786
0
        let global = Self::instance();
15787
0
        // vkQueuePresentKHR
15788
0
        let device_info = global.get_device_info(queue).unwrap();
15789
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15790
0
        let layer_result = device_info
15791
0
            .customized_info
15792
0
            .borrow()
15793
0
            .hooks()
15794
0
            .queue_present_khr(queue, unsafe { p_present_info.as_ref() }.unwrap());
15795
0
        match layer_result {
15796
0
            LayerResult::Handled(res) => match res {
15797
0
                Ok(()) => vk::Result::SUCCESS,
15798
0
                Err(e) => e,
15799
            },
15800
            LayerResult::Unhandled => unsafe {
15801
0
                (dispatch_table.queue_present_khr)(queue, p_present_info)
15802
            },
15803
        }
15804
0
    }
15805
0
    extern "system" fn get_device_group_present_capabilities_khr(
15806
0
        device: vk::Device,
15807
0
        p_device_group_present_capabilities: *mut vk::DeviceGroupPresentCapabilitiesKHR,
15808
0
    ) -> vk::Result {
15809
0
        let global = Self::instance();
15810
0
        // vkGetDeviceGroupPresentCapabilitiesKHR
15811
0
        let device_info = global.get_device_info(device).unwrap();
15812
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15813
0
        let layer_result = device_info
15814
0
            .customized_info
15815
0
            .borrow()
15816
0
            .hooks()
15817
0
            .get_device_group_present_capabilities_khr(
15818
0
                unsafe { ptr_as_uninit_mut(p_device_group_present_capabilities) }.unwrap(),
15819
0
            );
15820
0
        match layer_result {
15821
0
            LayerResult::Handled(res) => match res {
15822
0
                Ok(()) => vk::Result::SUCCESS,
15823
0
                Err(e) => e,
15824
            },
15825
            LayerResult::Unhandled => unsafe {
15826
0
                (dispatch_table.get_device_group_present_capabilities_khr)(
15827
0
                    device,
15828
0
                    p_device_group_present_capabilities,
15829
0
                )
15830
            },
15831
        }
15832
0
    }
15833
0
    extern "system" fn get_device_group_surface_present_modes_khr(
15834
0
        device: vk::Device,
15835
0
        surface: vk::SurfaceKHR,
15836
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
15837
0
    ) -> vk::Result {
15838
0
        let global = Self::instance();
15839
0
        // vkGetDeviceGroupSurfacePresentModesKHR
15840
0
        let device_info = global.get_device_info(device).unwrap();
15841
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15842
0
        let layer_result = device_info
15843
0
            .customized_info
15844
0
            .borrow()
15845
0
            .hooks()
15846
0
            .get_device_group_surface_present_modes_khr(surface);
15847
0
        match layer_result {
15848
0
            LayerResult::Handled(res) => match res {
15849
0
                Ok(res) => {
15850
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
15851
0
                    vk::Result::SUCCESS
15852
                }
15853
0
                Err(e) => e,
15854
            },
15855
            LayerResult::Unhandled => unsafe {
15856
0
                (dispatch_table.get_device_group_surface_present_modes_khr)(
15857
0
                    device, surface, p_modes,
15858
0
                )
15859
            },
15860
        }
15861
0
    }
15862
0
    extern "system" fn acquire_next_image2_khr(
15863
0
        device: vk::Device,
15864
0
        p_acquire_info: *const vk::AcquireNextImageInfoKHR,
15865
0
        p_image_index: *mut u32,
15866
0
    ) -> vk::Result {
15867
0
        let global = Self::instance();
15868
0
        // vkAcquireNextImage2KHR
15869
0
        let device_info = global.get_device_info(device).unwrap();
15870
0
        let dispatch_table = &device_info.dispatch_table.khr_swapchain;
15871
0
        let layer_result = device_info
15872
0
            .customized_info
15873
0
            .borrow()
15874
0
            .hooks()
15875
0
            .acquire_next_image2_khr(unsafe { p_acquire_info.as_ref() }.unwrap());
15876
0
        match layer_result {
15877
0
            LayerResult::Handled(res) => match res {
15878
0
                Ok(res) => {
15879
0
                    *unsafe { p_image_index.as_mut() }.unwrap() = res;
15880
0
                    vk::Result::SUCCESS
15881
                }
15882
0
                Err(e) => e,
15883
            },
15884
            LayerResult::Unhandled => unsafe {
15885
0
                (dispatch_table.acquire_next_image2_khr)(device, p_acquire_info, p_image_index)
15886
            },
15887
        }
15888
0
    }
15889
0
    extern "system" fn create_shared_swapchains_khr(
15890
0
        device: vk::Device,
15891
0
        swapchain_count: u32,
15892
0
        p_create_infos: *const vk::SwapchainCreateInfoKHR,
15893
0
        p_allocator: *const vk::AllocationCallbacks,
15894
0
        p_swapchains: *mut vk::SwapchainKHR,
15895
0
    ) -> vk::Result {
15896
0
        let global = Self::instance();
15897
0
        // vkCreateSharedSwapchainsKHR
15898
0
        let device_info = global.get_device_info(device).unwrap();
15899
0
        let dispatch_table = &device_info.dispatch_table.khr_display_swapchain;
15900
0
        let layer_result = device_info
15901
0
            .customized_info
15902
0
            .borrow()
15903
0
            .hooks()
15904
0
            .create_shared_swapchains_khr(
15905
0
                unsafe { slice_from_raw_parts(p_create_infos, swapchain_count) },
15906
0
                unsafe { p_allocator.as_ref() },
15907
0
            );
15908
0
        match layer_result {
15909
0
            LayerResult::Handled(res) => match res {
15910
0
                Ok(res) => {
15911
0
                    unsafe {
15912
0
                        std::slice::from_raw_parts_mut(
15913
0
                            p_swapchains,
15914
0
                            swapchain_count.try_into().unwrap(),
15915
0
                        )
15916
0
                    }
15917
0
                    .copy_from_slice(&res);
15918
0
                    vk::Result::SUCCESS
15919
                }
15920
0
                Err(e) => e,
15921
            },
15922
            LayerResult::Unhandled => unsafe {
15923
0
                (dispatch_table.create_shared_swapchains_khr)(
15924
0
                    device,
15925
0
                    swapchain_count,
15926
0
                    p_create_infos,
15927
0
                    p_allocator,
15928
0
                    p_swapchains,
15929
0
                )
15930
            },
15931
        }
15932
0
    }
15933
0
    extern "system" fn create_video_session_khr(
15934
0
        device: vk::Device,
15935
0
        p_create_info: *const vk::VideoSessionCreateInfoKHR,
15936
0
        p_allocator: *const vk::AllocationCallbacks,
15937
0
        p_video_session: *mut vk::VideoSessionKHR,
15938
0
    ) -> vk::Result {
15939
0
        let global = Self::instance();
15940
0
        // vkCreateVideoSessionKHR
15941
0
        let device_info = global.get_device_info(device).unwrap();
15942
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15943
0
        let layer_result = device_info
15944
0
            .customized_info
15945
0
            .borrow()
15946
0
            .hooks()
15947
0
            .create_video_session_khr(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
15948
0
                p_allocator.as_ref()
15949
0
            });
15950
0
        match layer_result {
15951
0
            LayerResult::Handled(res) => match res {
15952
0
                Ok(res) => {
15953
0
                    *unsafe { p_video_session.as_mut() }.unwrap() = res;
15954
0
                    vk::Result::SUCCESS
15955
                }
15956
0
                Err(e) => e,
15957
            },
15958
            LayerResult::Unhandled => unsafe {
15959
0
                (dispatch_table.create_video_session_khr)(
15960
0
                    device,
15961
0
                    p_create_info,
15962
0
                    p_allocator,
15963
0
                    p_video_session,
15964
0
                )
15965
            },
15966
        }
15967
0
    }
15968
0
    extern "system" fn destroy_video_session_khr(
15969
0
        device: vk::Device,
15970
0
        video_session: vk::VideoSessionKHR,
15971
0
        p_allocator: *const vk::AllocationCallbacks,
15972
0
    ) {
15973
0
        let global = Self::instance();
15974
0
        // vkDestroyVideoSessionKHR
15975
0
        let device_info = global.get_device_info(device).unwrap();
15976
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15977
0
        let layer_result = device_info
15978
0
            .customized_info
15979
0
            .borrow()
15980
0
            .hooks()
15981
0
            .destroy_video_session_khr(video_session, unsafe { p_allocator.as_ref() });
15982
0
        match layer_result {
15983
0
            LayerResult::Handled(res) => res,
15984
            LayerResult::Unhandled => unsafe {
15985
0
                (dispatch_table.destroy_video_session_khr)(device, video_session, p_allocator)
15986
            },
15987
        }
15988
0
    }
15989
0
    extern "system" fn get_video_session_memory_requirements_khr(
15990
0
        device: vk::Device,
15991
0
        video_session: vk::VideoSessionKHR,
15992
0
        p_memory_requirements_count: *mut u32,
15993
0
        p_memory_requirements: *mut vk::VideoSessionMemoryRequirementsKHR,
15994
0
    ) -> vk::Result {
15995
0
        let global = Self::instance();
15996
0
        // vkGetVideoSessionMemoryRequirementsKHR
15997
0
        let device_info = global.get_device_info(device).unwrap();
15998
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
15999
0
        let layer_result = device_info
16000
0
            .customized_info
16001
0
            .borrow()
16002
0
            .hooks()
16003
0
            .get_video_session_memory_requirements_khr(
16004
0
                video_session,
16005
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements_count) }.unwrap(),
16006
0
                unsafe {
16007
0
                    maybe_uninit_slice_from_raw_parts_mut(
16008
0
                        p_memory_requirements,
16009
0
                        p_memory_requirements_count,
16010
0
                    )
16011
0
                },
16012
0
            );
16013
0
        match layer_result {
16014
0
            LayerResult::Handled(res) => match res {
16015
0
                Ok(()) => vk::Result::SUCCESS,
16016
0
                Err(e) => e,
16017
            },
16018
            LayerResult::Unhandled => unsafe {
16019
0
                (dispatch_table.get_video_session_memory_requirements_khr)(
16020
0
                    device,
16021
0
                    video_session,
16022
0
                    p_memory_requirements_count,
16023
0
                    p_memory_requirements,
16024
0
                )
16025
            },
16026
        }
16027
0
    }
16028
0
    extern "system" fn bind_video_session_memory_khr(
16029
0
        device: vk::Device,
16030
0
        video_session: vk::VideoSessionKHR,
16031
0
        bind_session_memory_info_count: u32,
16032
0
        p_bind_session_memory_infos: *const vk::BindVideoSessionMemoryInfoKHR,
16033
0
    ) -> vk::Result {
16034
0
        let global = Self::instance();
16035
0
        // vkBindVideoSessionMemoryKHR
16036
0
        let device_info = global.get_device_info(device).unwrap();
16037
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16038
0
        let layer_result = device_info
16039
0
            .customized_info
16040
0
            .borrow()
16041
0
            .hooks()
16042
0
            .bind_video_session_memory_khr(video_session, unsafe {
16043
0
                slice_from_raw_parts(p_bind_session_memory_infos, bind_session_memory_info_count)
16044
0
            });
16045
0
        match layer_result {
16046
0
            LayerResult::Handled(res) => match res {
16047
0
                Ok(()) => vk::Result::SUCCESS,
16048
0
                Err(e) => e,
16049
            },
16050
            LayerResult::Unhandled => unsafe {
16051
0
                (dispatch_table.bind_video_session_memory_khr)(
16052
0
                    device,
16053
0
                    video_session,
16054
0
                    bind_session_memory_info_count,
16055
0
                    p_bind_session_memory_infos,
16056
0
                )
16057
            },
16058
        }
16059
0
    }
16060
0
    extern "system" fn create_video_session_parameters_khr(
16061
0
        device: vk::Device,
16062
0
        p_create_info: *const vk::VideoSessionParametersCreateInfoKHR,
16063
0
        p_allocator: *const vk::AllocationCallbacks,
16064
0
        p_video_session_parameters: *mut vk::VideoSessionParametersKHR,
16065
0
    ) -> vk::Result {
16066
0
        let global = Self::instance();
16067
0
        // vkCreateVideoSessionParametersKHR
16068
0
        let device_info = global.get_device_info(device).unwrap();
16069
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16070
0
        let layer_result = device_info
16071
0
            .customized_info
16072
0
            .borrow()
16073
0
            .hooks()
16074
0
            .create_video_session_parameters_khr(
16075
0
                unsafe { p_create_info.as_ref() }.unwrap(),
16076
0
                unsafe { p_allocator.as_ref() },
16077
0
            );
16078
0
        match layer_result {
16079
0
            LayerResult::Handled(res) => match res {
16080
0
                Ok(res) => {
16081
0
                    *unsafe { p_video_session_parameters.as_mut() }.unwrap() = res;
16082
0
                    vk::Result::SUCCESS
16083
                }
16084
0
                Err(e) => e,
16085
            },
16086
            LayerResult::Unhandled => unsafe {
16087
0
                (dispatch_table.create_video_session_parameters_khr)(
16088
0
                    device,
16089
0
                    p_create_info,
16090
0
                    p_allocator,
16091
0
                    p_video_session_parameters,
16092
0
                )
16093
            },
16094
        }
16095
0
    }
16096
0
    extern "system" fn update_video_session_parameters_khr(
16097
0
        device: vk::Device,
16098
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16099
0
        p_update_info: *const vk::VideoSessionParametersUpdateInfoKHR,
16100
0
    ) -> vk::Result {
16101
0
        let global = Self::instance();
16102
0
        // vkUpdateVideoSessionParametersKHR
16103
0
        let device_info = global.get_device_info(device).unwrap();
16104
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16105
0
        let layer_result = device_info
16106
0
            .customized_info
16107
0
            .borrow()
16108
0
            .hooks()
16109
0
            .update_video_session_parameters_khr(
16110
0
                video_session_parameters,
16111
0
                unsafe { p_update_info.as_ref() }.unwrap(),
16112
0
            );
16113
0
        match layer_result {
16114
0
            LayerResult::Handled(res) => match res {
16115
0
                Ok(()) => vk::Result::SUCCESS,
16116
0
                Err(e) => e,
16117
            },
16118
            LayerResult::Unhandled => unsafe {
16119
0
                (dispatch_table.update_video_session_parameters_khr)(
16120
0
                    device,
16121
0
                    video_session_parameters,
16122
0
                    p_update_info,
16123
0
                )
16124
            },
16125
        }
16126
0
    }
16127
0
    extern "system" fn destroy_video_session_parameters_khr(
16128
0
        device: vk::Device,
16129
0
        video_session_parameters: vk::VideoSessionParametersKHR,
16130
0
        p_allocator: *const vk::AllocationCallbacks,
16131
0
    ) {
16132
0
        let global = Self::instance();
16133
0
        // vkDestroyVideoSessionParametersKHR
16134
0
        let device_info = global.get_device_info(device).unwrap();
16135
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16136
0
        let layer_result = device_info
16137
0
            .customized_info
16138
0
            .borrow()
16139
0
            .hooks()
16140
0
            .destroy_video_session_parameters_khr(video_session_parameters, unsafe {
16141
0
                p_allocator.as_ref()
16142
0
            });
16143
0
        match layer_result {
16144
0
            LayerResult::Handled(res) => res,
16145
            LayerResult::Unhandled => unsafe {
16146
0
                (dispatch_table.destroy_video_session_parameters_khr)(
16147
0
                    device,
16148
0
                    video_session_parameters,
16149
0
                    p_allocator,
16150
0
                )
16151
            },
16152
        }
16153
0
    }
16154
0
    extern "system" fn cmd_begin_video_coding_khr(
16155
0
        command_buffer: vk::CommandBuffer,
16156
0
        p_begin_info: *const vk::VideoBeginCodingInfoKHR,
16157
0
    ) {
16158
0
        let global = Self::instance();
16159
0
        // vkCmdBeginVideoCodingKHR
16160
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16161
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16162
0
        let layer_result = device_info
16163
0
            .customized_info
16164
0
            .borrow()
16165
0
            .hooks()
16166
0
            .cmd_begin_video_coding_khr(command_buffer, unsafe { p_begin_info.as_ref() }.unwrap());
16167
0
        match layer_result {
16168
0
            LayerResult::Handled(res) => res,
16169
            LayerResult::Unhandled => unsafe {
16170
0
                (dispatch_table.cmd_begin_video_coding_khr)(command_buffer, p_begin_info)
16171
            },
16172
        }
16173
0
    }
16174
0
    extern "system" fn cmd_end_video_coding_khr(
16175
0
        command_buffer: vk::CommandBuffer,
16176
0
        p_end_coding_info: *const vk::VideoEndCodingInfoKHR,
16177
0
    ) {
16178
0
        let global = Self::instance();
16179
0
        // vkCmdEndVideoCodingKHR
16180
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16181
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16182
0
        let layer_result = device_info
16183
0
            .customized_info
16184
0
            .borrow()
16185
0
            .hooks()
16186
0
            .cmd_end_video_coding_khr(
16187
0
                command_buffer,
16188
0
                unsafe { p_end_coding_info.as_ref() }.unwrap(),
16189
0
            );
16190
0
        match layer_result {
16191
0
            LayerResult::Handled(res) => res,
16192
            LayerResult::Unhandled => unsafe {
16193
0
                (dispatch_table.cmd_end_video_coding_khr)(command_buffer, p_end_coding_info)
16194
            },
16195
        }
16196
0
    }
16197
0
    extern "system" fn cmd_control_video_coding_khr(
16198
0
        command_buffer: vk::CommandBuffer,
16199
0
        p_coding_control_info: *const vk::VideoCodingControlInfoKHR,
16200
0
    ) {
16201
0
        let global = Self::instance();
16202
0
        // vkCmdControlVideoCodingKHR
16203
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16204
0
        let dispatch_table = &device_info.dispatch_table.khr_video_queue;
16205
0
        let layer_result = device_info
16206
0
            .customized_info
16207
0
            .borrow()
16208
0
            .hooks()
16209
0
            .cmd_control_video_coding_khr(
16210
0
                command_buffer,
16211
0
                unsafe { p_coding_control_info.as_ref() }.unwrap(),
16212
0
            );
16213
0
        match layer_result {
16214
0
            LayerResult::Handled(res) => res,
16215
            LayerResult::Unhandled => unsafe {
16216
0
                (dispatch_table.cmd_control_video_coding_khr)(command_buffer, p_coding_control_info)
16217
            },
16218
        }
16219
0
    }
16220
0
    extern "system" fn cmd_decode_video_khr(
16221
0
        command_buffer: vk::CommandBuffer,
16222
0
        p_decode_info: *const vk::VideoDecodeInfoKHR,
16223
0
    ) {
16224
0
        let global = Self::instance();
16225
0
        // vkCmdDecodeVideoKHR
16226
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16227
0
        let dispatch_table = &device_info.dispatch_table.khr_video_decode_queue;
16228
0
        let layer_result = device_info
16229
0
            .customized_info
16230
0
            .borrow()
16231
0
            .hooks()
16232
0
            .cmd_decode_video_khr(command_buffer, unsafe { p_decode_info.as_ref() }.unwrap());
16233
0
        match layer_result {
16234
0
            LayerResult::Handled(res) => res,
16235
            LayerResult::Unhandled => unsafe {
16236
0
                (dispatch_table.cmd_decode_video_khr)(command_buffer, p_decode_info)
16237
            },
16238
        }
16239
0
    }
16240
0
    extern "system" fn get_memory_win32_handle_khr(
16241
0
        device: vk::Device,
16242
0
        p_get_win32_handle_info: *const vk::MemoryGetWin32HandleInfoKHR,
16243
0
        p_handle: *mut vk::HANDLE,
16244
0
    ) -> vk::Result {
16245
0
        let global = Self::instance();
16246
0
        // vkGetMemoryWin32HandleKHR
16247
0
        let device_info = global.get_device_info(device).unwrap();
16248
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16249
0
        let layer_result = device_info
16250
0
            .customized_info
16251
0
            .borrow()
16252
0
            .hooks()
16253
0
            .get_memory_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16254
0
        match layer_result {
16255
0
            LayerResult::Handled(res) => match res {
16256
0
                Ok(res) => {
16257
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16258
0
                    vk::Result::SUCCESS
16259
                }
16260
0
                Err(e) => e,
16261
            },
16262
            LayerResult::Unhandled => unsafe {
16263
0
                (dispatch_table.get_memory_win32_handle_khr)(
16264
0
                    device,
16265
0
                    p_get_win32_handle_info,
16266
0
                    p_handle,
16267
0
                )
16268
            },
16269
        }
16270
0
    }
16271
0
    extern "system" fn get_memory_win32_handle_properties_khr(
16272
0
        device: vk::Device,
16273
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16274
0
        handle: vk::HANDLE,
16275
0
        p_memory_win32_handle_properties: *mut vk::MemoryWin32HandlePropertiesKHR,
16276
0
    ) -> vk::Result {
16277
0
        let global = Self::instance();
16278
0
        // vkGetMemoryWin32HandlePropertiesKHR
16279
0
        let device_info = global.get_device_info(device).unwrap();
16280
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_win32;
16281
0
        let layer_result = device_info
16282
0
            .customized_info
16283
0
            .borrow()
16284
0
            .hooks()
16285
0
            .get_memory_win32_handle_properties_khr(
16286
0
                handle_type,
16287
0
                handle,
16288
0
                unsafe { ptr_as_uninit_mut(p_memory_win32_handle_properties) }.unwrap(),
16289
0
            );
16290
0
        match layer_result {
16291
0
            LayerResult::Handled(res) => match res {
16292
0
                Ok(()) => vk::Result::SUCCESS,
16293
0
                Err(e) => e,
16294
            },
16295
            LayerResult::Unhandled => unsafe {
16296
0
                (dispatch_table.get_memory_win32_handle_properties_khr)(
16297
0
                    device,
16298
0
                    handle_type,
16299
0
                    handle,
16300
0
                    p_memory_win32_handle_properties,
16301
0
                )
16302
            },
16303
        }
16304
0
    }
16305
0
    extern "system" fn get_memory_fd_khr(
16306
0
        device: vk::Device,
16307
0
        p_get_fd_info: *const vk::MemoryGetFdInfoKHR,
16308
0
        p_fd: *mut c_int,
16309
0
    ) -> vk::Result {
16310
0
        let global = Self::instance();
16311
0
        // vkGetMemoryFdKHR
16312
0
        let device_info = global.get_device_info(device).unwrap();
16313
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16314
0
        let layer_result = device_info
16315
0
            .customized_info
16316
0
            .borrow()
16317
0
            .hooks()
16318
0
            .get_memory_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16319
0
        match layer_result {
16320
0
            LayerResult::Handled(res) => match res {
16321
0
                Ok(res) => {
16322
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16323
0
                    vk::Result::SUCCESS
16324
                }
16325
0
                Err(e) => e,
16326
            },
16327
            LayerResult::Unhandled => unsafe {
16328
0
                (dispatch_table.get_memory_fd_khr)(device, p_get_fd_info, p_fd)
16329
            },
16330
        }
16331
0
    }
16332
0
    extern "system" fn get_memory_fd_properties_khr(
16333
0
        device: vk::Device,
16334
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
16335
0
        fd: c_int,
16336
0
        p_memory_fd_properties: *mut vk::MemoryFdPropertiesKHR,
16337
0
    ) -> vk::Result {
16338
0
        let global = Self::instance();
16339
0
        // vkGetMemoryFdPropertiesKHR
16340
0
        let device_info = global.get_device_info(device).unwrap();
16341
0
        let dispatch_table = &device_info.dispatch_table.khr_external_memory_fd;
16342
0
        let layer_result = device_info
16343
0
            .customized_info
16344
0
            .borrow()
16345
0
            .hooks()
16346
0
            .get_memory_fd_properties_khr(
16347
0
                handle_type,
16348
0
                fd,
16349
0
                unsafe { ptr_as_uninit_mut(p_memory_fd_properties) }.unwrap(),
16350
0
            );
16351
0
        match layer_result {
16352
0
            LayerResult::Handled(res) => match res {
16353
0
                Ok(()) => vk::Result::SUCCESS,
16354
0
                Err(e) => e,
16355
            },
16356
            LayerResult::Unhandled => unsafe {
16357
0
                (dispatch_table.get_memory_fd_properties_khr)(
16358
0
                    device,
16359
0
                    handle_type,
16360
0
                    fd,
16361
0
                    p_memory_fd_properties,
16362
0
                )
16363
            },
16364
        }
16365
0
    }
16366
0
    extern "system" fn import_semaphore_win32_handle_khr(
16367
0
        device: vk::Device,
16368
0
        p_import_semaphore_win32_handle_info: *const vk::ImportSemaphoreWin32HandleInfoKHR,
16369
0
    ) -> vk::Result {
16370
0
        let global = Self::instance();
16371
0
        // vkImportSemaphoreWin32HandleKHR
16372
0
        let device_info = global.get_device_info(device).unwrap();
16373
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16374
0
        let layer_result = device_info
16375
0
            .customized_info
16376
0
            .borrow()
16377
0
            .hooks()
16378
0
            .import_semaphore_win32_handle_khr(
16379
0
                unsafe { p_import_semaphore_win32_handle_info.as_ref() }.unwrap(),
16380
0
            );
16381
0
        match layer_result {
16382
0
            LayerResult::Handled(res) => match res {
16383
0
                Ok(()) => vk::Result::SUCCESS,
16384
0
                Err(e) => e,
16385
            },
16386
            LayerResult::Unhandled => unsafe {
16387
0
                (dispatch_table.import_semaphore_win32_handle_khr)(
16388
0
                    device,
16389
0
                    p_import_semaphore_win32_handle_info,
16390
0
                )
16391
            },
16392
        }
16393
0
    }
16394
0
    extern "system" fn get_semaphore_win32_handle_khr(
16395
0
        device: vk::Device,
16396
0
        p_get_win32_handle_info: *const vk::SemaphoreGetWin32HandleInfoKHR,
16397
0
        p_handle: *mut vk::HANDLE,
16398
0
    ) -> vk::Result {
16399
0
        let global = Self::instance();
16400
0
        // vkGetSemaphoreWin32HandleKHR
16401
0
        let device_info = global.get_device_info(device).unwrap();
16402
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_win32;
16403
0
        let layer_result = device_info
16404
0
            .customized_info
16405
0
            .borrow()
16406
0
            .hooks()
16407
0
            .get_semaphore_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16408
0
        match layer_result {
16409
0
            LayerResult::Handled(res) => match res {
16410
0
                Ok(res) => {
16411
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16412
0
                    vk::Result::SUCCESS
16413
                }
16414
0
                Err(e) => e,
16415
            },
16416
            LayerResult::Unhandled => unsafe {
16417
0
                (dispatch_table.get_semaphore_win32_handle_khr)(
16418
0
                    device,
16419
0
                    p_get_win32_handle_info,
16420
0
                    p_handle,
16421
0
                )
16422
            },
16423
        }
16424
0
    }
16425
0
    extern "system" fn import_semaphore_fd_khr(
16426
0
        device: vk::Device,
16427
0
        p_import_semaphore_fd_info: *const vk::ImportSemaphoreFdInfoKHR,
16428
0
    ) -> vk::Result {
16429
0
        let global = Self::instance();
16430
0
        // vkImportSemaphoreFdKHR
16431
0
        let device_info = global.get_device_info(device).unwrap();
16432
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16433
0
        let layer_result = device_info
16434
0
            .customized_info
16435
0
            .borrow()
16436
0
            .hooks()
16437
0
            .import_semaphore_fd_khr(unsafe { p_import_semaphore_fd_info.as_ref() }.unwrap());
16438
0
        match layer_result {
16439
0
            LayerResult::Handled(res) => match res {
16440
0
                Ok(()) => vk::Result::SUCCESS,
16441
0
                Err(e) => e,
16442
            },
16443
            LayerResult::Unhandled => unsafe {
16444
0
                (dispatch_table.import_semaphore_fd_khr)(device, p_import_semaphore_fd_info)
16445
            },
16446
        }
16447
0
    }
16448
0
    extern "system" fn get_semaphore_fd_khr(
16449
0
        device: vk::Device,
16450
0
        p_get_fd_info: *const vk::SemaphoreGetFdInfoKHR,
16451
0
        p_fd: *mut c_int,
16452
0
    ) -> vk::Result {
16453
0
        let global = Self::instance();
16454
0
        // vkGetSemaphoreFdKHR
16455
0
        let device_info = global.get_device_info(device).unwrap();
16456
0
        let dispatch_table = &device_info.dispatch_table.khr_external_semaphore_fd;
16457
0
        let layer_result = device_info
16458
0
            .customized_info
16459
0
            .borrow()
16460
0
            .hooks()
16461
0
            .get_semaphore_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16462
0
        match layer_result {
16463
0
            LayerResult::Handled(res) => match res {
16464
0
                Ok(res) => {
16465
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16466
0
                    vk::Result::SUCCESS
16467
                }
16468
0
                Err(e) => e,
16469
            },
16470
            LayerResult::Unhandled => unsafe {
16471
0
                (dispatch_table.get_semaphore_fd_khr)(device, p_get_fd_info, p_fd)
16472
            },
16473
        }
16474
0
    }
16475
0
    extern "system" fn cmd_push_descriptor_set_khr(
16476
0
        command_buffer: vk::CommandBuffer,
16477
0
        pipeline_bind_point: vk::PipelineBindPoint,
16478
0
        layout: vk::PipelineLayout,
16479
0
        set: u32,
16480
0
        descriptor_write_count: u32,
16481
0
        p_descriptor_writes: *const vk::WriteDescriptorSet,
16482
0
    ) {
16483
0
        let global = Self::instance();
16484
0
        // vkCmdPushDescriptorSetKHR
16485
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16486
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16487
0
        let layer_result = device_info
16488
0
            .customized_info
16489
0
            .borrow()
16490
0
            .hooks()
16491
0
            .cmd_push_descriptor_set_khr(
16492
0
                command_buffer,
16493
0
                pipeline_bind_point,
16494
0
                layout,
16495
0
                set,
16496
0
                unsafe { slice_from_raw_parts(p_descriptor_writes, descriptor_write_count) },
16497
0
            );
16498
0
        match layer_result {
16499
0
            LayerResult::Handled(res) => res,
16500
            LayerResult::Unhandled => unsafe {
16501
0
                (dispatch_table.cmd_push_descriptor_set_khr)(
16502
0
                    command_buffer,
16503
0
                    pipeline_bind_point,
16504
0
                    layout,
16505
0
                    set,
16506
0
                    descriptor_write_count,
16507
0
                    p_descriptor_writes,
16508
0
                )
16509
            },
16510
        }
16511
0
    }
16512
0
    extern "system" fn cmd_push_descriptor_set_with_template_khr(
16513
0
        command_buffer: vk::CommandBuffer,
16514
0
        descriptor_update_template: vk::DescriptorUpdateTemplate,
16515
0
        layout: vk::PipelineLayout,
16516
0
        set: u32,
16517
0
        p_data: *const c_void,
16518
0
    ) {
16519
0
        let global = Self::instance();
16520
0
        // vkCmdPushDescriptorSetWithTemplateKHR
16521
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16522
0
        let dispatch_table = &device_info.dispatch_table.khr_push_descriptor;
16523
0
        let layer_result = device_info
16524
0
            .customized_info
16525
0
            .borrow()
16526
0
            .hooks()
16527
0
            .cmd_push_descriptor_set_with_template_khr(
16528
0
                command_buffer,
16529
0
                descriptor_update_template,
16530
0
                layout,
16531
0
                set,
16532
0
                p_data,
16533
0
            );
16534
0
        match layer_result {
16535
0
            LayerResult::Handled(res) => res,
16536
            LayerResult::Unhandled => unsafe {
16537
0
                (dispatch_table.cmd_push_descriptor_set_with_template_khr)(
16538
0
                    command_buffer,
16539
0
                    descriptor_update_template,
16540
0
                    layout,
16541
0
                    set,
16542
0
                    p_data,
16543
0
                )
16544
            },
16545
        }
16546
0
    }
16547
0
    extern "system" fn get_swapchain_status_khr(
16548
0
        device: vk::Device,
16549
0
        swapchain: vk::SwapchainKHR,
16550
0
    ) -> vk::Result {
16551
0
        let global = Self::instance();
16552
0
        // vkGetSwapchainStatusKHR
16553
0
        let device_info = global.get_device_info(device).unwrap();
16554
0
        let dispatch_table = &device_info.dispatch_table.khr_shared_presentable_image;
16555
0
        let layer_result = device_info
16556
0
            .customized_info
16557
0
            .borrow()
16558
0
            .hooks()
16559
0
            .get_swapchain_status_khr(swapchain);
16560
0
        match layer_result {
16561
0
            LayerResult::Handled(res) => match res {
16562
0
                Ok(()) => vk::Result::SUCCESS,
16563
0
                Err(e) => e,
16564
            },
16565
            LayerResult::Unhandled => unsafe {
16566
0
                (dispatch_table.get_swapchain_status_khr)(device, swapchain)
16567
            },
16568
        }
16569
0
    }
16570
0
    extern "system" fn import_fence_win32_handle_khr(
16571
0
        device: vk::Device,
16572
0
        p_import_fence_win32_handle_info: *const vk::ImportFenceWin32HandleInfoKHR,
16573
0
    ) -> vk::Result {
16574
0
        let global = Self::instance();
16575
0
        // vkImportFenceWin32HandleKHR
16576
0
        let device_info = global.get_device_info(device).unwrap();
16577
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16578
0
        let layer_result = device_info
16579
0
            .customized_info
16580
0
            .borrow()
16581
0
            .hooks()
16582
0
            .import_fence_win32_handle_khr(
16583
0
                unsafe { p_import_fence_win32_handle_info.as_ref() }.unwrap(),
16584
0
            );
16585
0
        match layer_result {
16586
0
            LayerResult::Handled(res) => match res {
16587
0
                Ok(()) => vk::Result::SUCCESS,
16588
0
                Err(e) => e,
16589
            },
16590
            LayerResult::Unhandled => unsafe {
16591
0
                (dispatch_table.import_fence_win32_handle_khr)(
16592
0
                    device,
16593
0
                    p_import_fence_win32_handle_info,
16594
0
                )
16595
            },
16596
        }
16597
0
    }
16598
0
    extern "system" fn get_fence_win32_handle_khr(
16599
0
        device: vk::Device,
16600
0
        p_get_win32_handle_info: *const vk::FenceGetWin32HandleInfoKHR,
16601
0
        p_handle: *mut vk::HANDLE,
16602
0
    ) -> vk::Result {
16603
0
        let global = Self::instance();
16604
0
        // vkGetFenceWin32HandleKHR
16605
0
        let device_info = global.get_device_info(device).unwrap();
16606
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_win32;
16607
0
        let layer_result = device_info
16608
0
            .customized_info
16609
0
            .borrow()
16610
0
            .hooks()
16611
0
            .get_fence_win32_handle_khr(unsafe { p_get_win32_handle_info.as_ref() }.unwrap());
16612
0
        match layer_result {
16613
0
            LayerResult::Handled(res) => match res {
16614
0
                Ok(res) => {
16615
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
16616
0
                    vk::Result::SUCCESS
16617
                }
16618
0
                Err(e) => e,
16619
            },
16620
            LayerResult::Unhandled => unsafe {
16621
0
                (dispatch_table.get_fence_win32_handle_khr)(
16622
0
                    device,
16623
0
                    p_get_win32_handle_info,
16624
0
                    p_handle,
16625
0
                )
16626
            },
16627
        }
16628
0
    }
16629
0
    extern "system" fn import_fence_fd_khr(
16630
0
        device: vk::Device,
16631
0
        p_import_fence_fd_info: *const vk::ImportFenceFdInfoKHR,
16632
0
    ) -> vk::Result {
16633
0
        let global = Self::instance();
16634
0
        // vkImportFenceFdKHR
16635
0
        let device_info = global.get_device_info(device).unwrap();
16636
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16637
0
        let layer_result = device_info
16638
0
            .customized_info
16639
0
            .borrow()
16640
0
            .hooks()
16641
0
            .import_fence_fd_khr(unsafe { p_import_fence_fd_info.as_ref() }.unwrap());
16642
0
        match layer_result {
16643
0
            LayerResult::Handled(res) => match res {
16644
0
                Ok(()) => vk::Result::SUCCESS,
16645
0
                Err(e) => e,
16646
            },
16647
            LayerResult::Unhandled => unsafe {
16648
0
                (dispatch_table.import_fence_fd_khr)(device, p_import_fence_fd_info)
16649
            },
16650
        }
16651
0
    }
16652
0
    extern "system" fn get_fence_fd_khr(
16653
0
        device: vk::Device,
16654
0
        p_get_fd_info: *const vk::FenceGetFdInfoKHR,
16655
0
        p_fd: *mut c_int,
16656
0
    ) -> vk::Result {
16657
0
        let global = Self::instance();
16658
0
        // vkGetFenceFdKHR
16659
0
        let device_info = global.get_device_info(device).unwrap();
16660
0
        let dispatch_table = &device_info.dispatch_table.khr_external_fence_fd;
16661
0
        let layer_result = device_info
16662
0
            .customized_info
16663
0
            .borrow()
16664
0
            .hooks()
16665
0
            .get_fence_fd_khr(unsafe { p_get_fd_info.as_ref() }.unwrap());
16666
0
        match layer_result {
16667
0
            LayerResult::Handled(res) => match res {
16668
0
                Ok(res) => {
16669
0
                    *unsafe { p_fd.as_mut() }.unwrap() = res;
16670
0
                    vk::Result::SUCCESS
16671
                }
16672
0
                Err(e) => e,
16673
            },
16674
            LayerResult::Unhandled => unsafe {
16675
0
                (dispatch_table.get_fence_fd_khr)(device, p_get_fd_info, p_fd)
16676
            },
16677
        }
16678
0
    }
16679
0
    extern "system" fn acquire_profiling_lock_khr(
16680
0
        device: vk::Device,
16681
0
        p_info: *const vk::AcquireProfilingLockInfoKHR,
16682
0
    ) -> vk::Result {
16683
0
        let global = Self::instance();
16684
0
        // vkAcquireProfilingLockKHR
16685
0
        let device_info = global.get_device_info(device).unwrap();
16686
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16687
0
        let layer_result = device_info
16688
0
            .customized_info
16689
0
            .borrow()
16690
0
            .hooks()
16691
0
            .acquire_profiling_lock_khr(unsafe { p_info.as_ref() }.unwrap());
16692
0
        match layer_result {
16693
0
            LayerResult::Handled(res) => match res {
16694
0
                Ok(()) => vk::Result::SUCCESS,
16695
0
                Err(e) => e,
16696
            },
16697
            LayerResult::Unhandled => unsafe {
16698
0
                (dispatch_table.acquire_profiling_lock_khr)(device, p_info)
16699
            },
16700
        }
16701
0
    }
16702
0
    extern "system" fn release_profiling_lock_khr(device: vk::Device) {
16703
0
        let global = Self::instance();
16704
0
        // vkReleaseProfilingLockKHR
16705
0
        let device_info = global.get_device_info(device).unwrap();
16706
0
        let dispatch_table = &device_info.dispatch_table.khr_performance_query;
16707
0
        let layer_result = device_info
16708
0
            .customized_info
16709
0
            .borrow()
16710
0
            .hooks()
16711
0
            .release_profiling_lock_khr();
16712
0
        match layer_result {
16713
0
            LayerResult::Handled(res) => res,
16714
            LayerResult::Unhandled => unsafe {
16715
0
                (dispatch_table.release_profiling_lock_khr)(device)
16716
            },
16717
        }
16718
0
    }
16719
0
    extern "system" fn cmd_set_fragment_shading_rate_khr(
16720
0
        command_buffer: vk::CommandBuffer,
16721
0
        p_fragment_size: *const vk::Extent2D,
16722
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
16723
0
    ) {
16724
0
        let global = Self::instance();
16725
0
        // vkCmdSetFragmentShadingRateKHR
16726
0
        let device_info = global.get_device_info(command_buffer).unwrap();
16727
0
        let dispatch_table = &device_info.dispatch_table.khr_fragment_shading_rate;
16728
0
        let layer_result = device_info
16729
0
            .customized_info
16730
0
            .borrow()
16731
0
            .hooks()
16732
0
            .cmd_set_fragment_shading_rate_khr(
16733
0
                command_buffer,
16734
0
                unsafe { p_fragment_size.as_ref() }.unwrap(),
16735
0
                unsafe { combiner_ops.as_ref() }.unwrap(),
16736
0
            );
16737
0
        match layer_result {
16738
0
            LayerResult::Handled(res) => res,
16739
            LayerResult::Unhandled => unsafe {
16740
0
                (dispatch_table.cmd_set_fragment_shading_rate_khr)(
16741
0
                    command_buffer,
16742
0
                    p_fragment_size,
16743
0
                    combiner_ops,
16744
0
                )
16745
            },
16746
        }
16747
0
    }
16748
0
    extern "system" fn wait_for_present_khr(
16749
0
        device: vk::Device,
16750
0
        swapchain: vk::SwapchainKHR,
16751
0
        present_id: u64,
16752
0
        timeout: u64,
16753
0
    ) -> vk::Result {
16754
0
        let global = Self::instance();
16755
0
        // vkWaitForPresentKHR
16756
0
        let device_info = global.get_device_info(device).unwrap();
16757
0
        let dispatch_table = &device_info.dispatch_table.khr_present_wait;
16758
0
        let layer_result = device_info
16759
0
            .customized_info
16760
0
            .borrow()
16761
0
            .hooks()
16762
0
            .wait_for_present_khr(swapchain, present_id, timeout);
16763
0
        match layer_result {
16764
0
            LayerResult::Handled(res) => match res {
16765
0
                Ok(()) => vk::Result::SUCCESS,
16766
0
                Err(e) => e,
16767
            },
16768
            LayerResult::Unhandled => unsafe {
16769
0
                (dispatch_table.wait_for_present_khr)(device, swapchain, present_id, timeout)
16770
            },
16771
        }
16772
0
    }
16773
0
    extern "system" fn create_deferred_operation_khr(
16774
0
        device: vk::Device,
16775
0
        p_allocator: *const vk::AllocationCallbacks,
16776
0
        p_deferred_operation: *mut vk::DeferredOperationKHR,
16777
0
    ) -> vk::Result {
16778
0
        let global = Self::instance();
16779
0
        // vkCreateDeferredOperationKHR
16780
0
        let device_info = global.get_device_info(device).unwrap();
16781
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16782
0
        let layer_result = device_info
16783
0
            .customized_info
16784
0
            .borrow()
16785
0
            .hooks()
16786
0
            .create_deferred_operation_khr(unsafe { p_allocator.as_ref() });
16787
0
        match layer_result {
16788
0
            LayerResult::Handled(res) => match res {
16789
0
                Ok(res) => {
16790
0
                    *unsafe { p_deferred_operation.as_mut() }.unwrap() = res;
16791
0
                    vk::Result::SUCCESS
16792
                }
16793
0
                Err(e) => e,
16794
            },
16795
            LayerResult::Unhandled => unsafe {
16796
0
                (dispatch_table.create_deferred_operation_khr)(
16797
0
                    device,
16798
0
                    p_allocator,
16799
0
                    p_deferred_operation,
16800
0
                )
16801
            },
16802
        }
16803
0
    }
16804
0
    extern "system" fn destroy_deferred_operation_khr(
16805
0
        device: vk::Device,
16806
0
        operation: vk::DeferredOperationKHR,
16807
0
        p_allocator: *const vk::AllocationCallbacks,
16808
0
    ) {
16809
0
        let global = Self::instance();
16810
0
        // vkDestroyDeferredOperationKHR
16811
0
        let device_info = global.get_device_info(device).unwrap();
16812
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16813
0
        let layer_result = device_info
16814
0
            .customized_info
16815
0
            .borrow()
16816
0
            .hooks()
16817
0
            .destroy_deferred_operation_khr(operation, unsafe { p_allocator.as_ref() });
16818
0
        match layer_result {
16819
0
            LayerResult::Handled(res) => res,
16820
            LayerResult::Unhandled => unsafe {
16821
0
                (dispatch_table.destroy_deferred_operation_khr)(device, operation, p_allocator)
16822
            },
16823
        }
16824
0
    }
16825
0
    extern "system" fn get_deferred_operation_max_concurrency_khr(
16826
0
        device: vk::Device,
16827
0
        operation: vk::DeferredOperationKHR,
16828
0
    ) -> u32 {
16829
0
        let global = Self::instance();
16830
0
        // vkGetDeferredOperationMaxConcurrencyKHR
16831
0
        let device_info = global.get_device_info(device).unwrap();
16832
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16833
0
        let layer_result = device_info
16834
0
            .customized_info
16835
0
            .borrow()
16836
0
            .hooks()
16837
0
            .get_deferred_operation_max_concurrency_khr(operation);
16838
0
        match layer_result {
16839
0
            LayerResult::Handled(res) => res,
16840
            LayerResult::Unhandled => unsafe {
16841
0
                (dispatch_table.get_deferred_operation_max_concurrency_khr)(device, operation)
16842
            },
16843
        }
16844
0
    }
16845
0
    extern "system" fn get_deferred_operation_result_khr(
16846
0
        device: vk::Device,
16847
0
        operation: vk::DeferredOperationKHR,
16848
0
    ) -> vk::Result {
16849
0
        let global = Self::instance();
16850
0
        // vkGetDeferredOperationResultKHR
16851
0
        let device_info = global.get_device_info(device).unwrap();
16852
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16853
0
        let layer_result = device_info
16854
0
            .customized_info
16855
0
            .borrow()
16856
0
            .hooks()
16857
0
            .get_deferred_operation_result_khr(operation);
16858
0
        match layer_result {
16859
0
            LayerResult::Handled(res) => match res {
16860
0
                Ok(()) => vk::Result::SUCCESS,
16861
0
                Err(e) => e,
16862
            },
16863
            LayerResult::Unhandled => unsafe {
16864
0
                (dispatch_table.get_deferred_operation_result_khr)(device, operation)
16865
            },
16866
        }
16867
0
    }
16868
0
    extern "system" fn deferred_operation_join_khr(
16869
0
        device: vk::Device,
16870
0
        operation: vk::DeferredOperationKHR,
16871
0
    ) -> vk::Result {
16872
0
        let global = Self::instance();
16873
0
        // vkDeferredOperationJoinKHR
16874
0
        let device_info = global.get_device_info(device).unwrap();
16875
0
        let dispatch_table = &device_info.dispatch_table.khr_deferred_host_operations;
16876
0
        let layer_result = device_info
16877
0
            .customized_info
16878
0
            .borrow()
16879
0
            .hooks()
16880
0
            .deferred_operation_join_khr(operation);
16881
0
        match layer_result {
16882
0
            LayerResult::Handled(res) => match res {
16883
0
                Ok(()) => vk::Result::SUCCESS,
16884
0
                Err(e) => e,
16885
            },
16886
            LayerResult::Unhandled => unsafe {
16887
0
                (dispatch_table.deferred_operation_join_khr)(device, operation)
16888
            },
16889
        }
16890
0
    }
16891
0
    extern "system" fn get_pipeline_executable_properties_khr(
16892
0
        device: vk::Device,
16893
0
        p_pipeline_info: *const vk::PipelineInfoKHR,
16894
0
        p_executable_count: *mut u32,
16895
0
        p_properties: *mut vk::PipelineExecutablePropertiesKHR,
16896
0
    ) -> vk::Result {
16897
0
        let global = Self::instance();
16898
0
        // vkGetPipelineExecutablePropertiesKHR
16899
0
        let device_info = global.get_device_info(device).unwrap();
16900
0
        let dispatch_table = &device_info
16901
0
            .dispatch_table
16902
0
            .khr_pipeline_executable_properties;
16903
0
        let layer_result = device_info
16904
0
            .customized_info
16905
0
            .borrow()
16906
0
            .hooks()
16907
0
            .get_pipeline_executable_properties_khr(
16908
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
16909
0
                unsafe { ptr_as_uninit_mut(p_executable_count) }.unwrap(),
16910
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_executable_count) },
16911
0
            );
16912
0
        match layer_result {
16913
0
            LayerResult::Handled(res) => match res {
16914
0
                Ok(()) => vk::Result::SUCCESS,
16915
0
                Err(e) => e,
16916
            },
16917
            LayerResult::Unhandled => unsafe {
16918
0
                (dispatch_table.get_pipeline_executable_properties_khr)(
16919
0
                    device,
16920
0
                    p_pipeline_info,
16921
0
                    p_executable_count,
16922
0
                    p_properties,
16923
0
                )
16924
            },
16925
        }
16926
0
    }
16927
0
    extern "system" fn get_pipeline_executable_statistics_khr(
16928
0
        device: vk::Device,
16929
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
16930
0
        p_statistic_count: *mut u32,
16931
0
        p_statistics: *mut vk::PipelineExecutableStatisticKHR,
16932
0
    ) -> vk::Result {
16933
0
        let global = Self::instance();
16934
0
        // vkGetPipelineExecutableStatisticsKHR
16935
0
        let device_info = global.get_device_info(device).unwrap();
16936
0
        let dispatch_table = &device_info
16937
0
            .dispatch_table
16938
0
            .khr_pipeline_executable_properties;
16939
0
        let layer_result = device_info
16940
0
            .customized_info
16941
0
            .borrow()
16942
0
            .hooks()
16943
0
            .get_pipeline_executable_statistics_khr(
16944
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
16945
0
                unsafe { ptr_as_uninit_mut(p_statistic_count) }.unwrap(),
16946
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_statistics, p_statistic_count) },
16947
0
            );
16948
0
        match layer_result {
16949
0
            LayerResult::Handled(res) => match res {
16950
0
                Ok(()) => vk::Result::SUCCESS,
16951
0
                Err(e) => e,
16952
            },
16953
            LayerResult::Unhandled => unsafe {
16954
0
                (dispatch_table.get_pipeline_executable_statistics_khr)(
16955
0
                    device,
16956
0
                    p_executable_info,
16957
0
                    p_statistic_count,
16958
0
                    p_statistics,
16959
0
                )
16960
            },
16961
        }
16962
0
    }
16963
0
    extern "system" fn get_pipeline_executable_internal_representations_khr(
16964
0
        device: vk::Device,
16965
0
        p_executable_info: *const vk::PipelineExecutableInfoKHR,
16966
0
        p_internal_representation_count: *mut u32,
16967
0
        p_internal_representations: *mut vk::PipelineExecutableInternalRepresentationKHR,
16968
0
    ) -> vk::Result {
16969
0
        let global = Self::instance();
16970
0
        // vkGetPipelineExecutableInternalRepresentationsKHR
16971
0
        let device_info = global.get_device_info(device).unwrap();
16972
0
        let dispatch_table = &device_info
16973
0
            .dispatch_table
16974
0
            .khr_pipeline_executable_properties;
16975
0
        let layer_result = device_info
16976
0
            .customized_info
16977
0
            .borrow()
16978
0
            .hooks()
16979
0
            .get_pipeline_executable_internal_representations_khr(
16980
0
                unsafe { p_executable_info.as_ref() }.unwrap(),
16981
0
                unsafe { ptr_as_uninit_mut(p_internal_representation_count) }.unwrap(),
16982
0
                unsafe {
16983
0
                    maybe_uninit_slice_from_raw_parts_mut(
16984
0
                        p_internal_representations,
16985
0
                        p_internal_representation_count,
16986
0
                    )
16987
0
                },
16988
0
            );
16989
0
        match layer_result {
16990
0
            LayerResult::Handled(res) => match res {
16991
0
                Ok(()) => vk::Result::SUCCESS,
16992
0
                Err(e) => e,
16993
            },
16994
            LayerResult::Unhandled => unsafe {
16995
0
                (dispatch_table.get_pipeline_executable_internal_representations_khr)(
16996
0
                    device,
16997
0
                    p_executable_info,
16998
0
                    p_internal_representation_count,
16999
0
                    p_internal_representations,
17000
0
                )
17001
            },
17002
        }
17003
0
    }
17004
0
    extern "system" fn cmd_encode_video_khr(
17005
0
        command_buffer: vk::CommandBuffer,
17006
0
        p_encode_info: *const vk::VideoEncodeInfoKHR,
17007
0
    ) {
17008
0
        let global = Self::instance();
17009
0
        // vkCmdEncodeVideoKHR
17010
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17011
0
        let dispatch_table = &device_info.dispatch_table.khr_video_encode_queue;
17012
0
        let layer_result = device_info
17013
0
            .customized_info
17014
0
            .borrow()
17015
0
            .hooks()
17016
0
            .cmd_encode_video_khr(command_buffer, unsafe { p_encode_info.as_ref() }.unwrap());
17017
0
        match layer_result {
17018
0
            LayerResult::Handled(res) => res,
17019
            LayerResult::Unhandled => unsafe {
17020
0
                (dispatch_table.cmd_encode_video_khr)(command_buffer, p_encode_info)
17021
            },
17022
        }
17023
0
    }
17024
0
    extern "system" fn cmd_write_buffer_marker2_amd(
17025
0
        command_buffer: vk::CommandBuffer,
17026
0
        stage: vk::PipelineStageFlags2,
17027
0
        dst_buffer: vk::Buffer,
17028
0
        dst_offset: vk::DeviceSize,
17029
0
        marker: u32,
17030
0
    ) {
17031
0
        let global = Self::instance();
17032
0
        // vkCmdWriteBufferMarker2AMD
17033
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17034
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17035
0
        let layer_result = device_info
17036
0
            .customized_info
17037
0
            .borrow()
17038
0
            .hooks()
17039
0
            .cmd_write_buffer_marker2_amd(command_buffer, stage, dst_buffer, dst_offset, marker);
17040
0
        match layer_result {
17041
0
            LayerResult::Handled(res) => res,
17042
            LayerResult::Unhandled => unsafe {
17043
0
                (dispatch_table.cmd_write_buffer_marker2_amd)(
17044
0
                    command_buffer,
17045
0
                    stage,
17046
0
                    dst_buffer,
17047
0
                    dst_offset,
17048
0
                    marker,
17049
0
                )
17050
            },
17051
        }
17052
0
    }
17053
0
    extern "system" fn get_queue_checkpoint_data2_nv(
17054
0
        queue: vk::Queue,
17055
0
        p_checkpoint_data_count: *mut u32,
17056
0
        p_checkpoint_data: *mut vk::CheckpointData2NV,
17057
0
    ) {
17058
0
        let global = Self::instance();
17059
0
        // vkGetQueueCheckpointData2NV
17060
0
        let device_info = global.get_device_info(queue).unwrap();
17061
0
        let dispatch_table = &device_info.dispatch_table.khr_synchronization2;
17062
0
        let layer_result = device_info
17063
0
            .customized_info
17064
0
            .borrow()
17065
0
            .hooks()
17066
0
            .get_queue_checkpoint_data2_nv(
17067
0
                queue,
17068
0
                unsafe { ptr_as_uninit_mut(p_checkpoint_data_count) }.unwrap(),
17069
0
                unsafe {
17070
0
                    maybe_uninit_slice_from_raw_parts_mut(
17071
0
                        p_checkpoint_data,
17072
0
                        p_checkpoint_data_count,
17073
0
                    )
17074
0
                },
17075
0
            );
17076
0
        match layer_result {
17077
0
            LayerResult::Handled(res) => res,
17078
            LayerResult::Unhandled => unsafe {
17079
0
                (dispatch_table.get_queue_checkpoint_data2_nv)(
17080
0
                    queue,
17081
0
                    p_checkpoint_data_count,
17082
0
                    p_checkpoint_data,
17083
0
                )
17084
            },
17085
        }
17086
0
    }
17087
0
    extern "system" fn cmd_trace_rays_indirect2_khr(
17088
0
        command_buffer: vk::CommandBuffer,
17089
0
        indirect_device_address: vk::DeviceAddress,
17090
0
    ) {
17091
0
        let global = Self::instance();
17092
0
        // vkCmdTraceRaysIndirect2KHR
17093
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17094
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_maintenance1;
17095
0
        let layer_result = device_info
17096
0
            .customized_info
17097
0
            .borrow()
17098
0
            .hooks()
17099
0
            .cmd_trace_rays_indirect2_khr(command_buffer, indirect_device_address);
17100
0
        match layer_result {
17101
0
            LayerResult::Handled(res) => res,
17102
            LayerResult::Unhandled => unsafe {
17103
0
                (dispatch_table.cmd_trace_rays_indirect2_khr)(
17104
0
                    command_buffer,
17105
0
                    indirect_device_address,
17106
0
                )
17107
            },
17108
        }
17109
0
    }
17110
0
    extern "system" fn get_swapchain_gralloc_usage_android(
17111
0
        device: vk::Device,
17112
0
        format: vk::Format,
17113
0
        image_usage: vk::ImageUsageFlags,
17114
0
        gralloc_usage: *mut c_int,
17115
0
    ) -> vk::Result {
17116
0
        let global = Self::instance();
17117
0
        // vkGetSwapchainGrallocUsageANDROID
17118
0
        let device_info = global.get_device_info(device).unwrap();
17119
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17120
0
        let layer_result = device_info
17121
0
            .customized_info
17122
0
            .borrow()
17123
0
            .hooks()
17124
0
            .get_swapchain_gralloc_usage_android(format, image_usage);
17125
0
        match layer_result {
17126
0
            LayerResult::Handled(res) => match res {
17127
0
                Ok(res) => {
17128
0
                    *unsafe { gralloc_usage.as_mut() }.unwrap() = res;
17129
0
                    vk::Result::SUCCESS
17130
                }
17131
0
                Err(e) => e,
17132
            },
17133
            LayerResult::Unhandled => unsafe {
17134
0
                (dispatch_table.get_swapchain_gralloc_usage_android)(
17135
0
                    device,
17136
0
                    format,
17137
0
                    image_usage,
17138
0
                    gralloc_usage,
17139
0
                )
17140
            },
17141
        }
17142
0
    }
17143
0
    extern "system" fn acquire_image_android(
17144
0
        device: vk::Device,
17145
0
        image: vk::Image,
17146
0
        native_fence_fd: c_int,
17147
0
        semaphore: vk::Semaphore,
17148
0
        fence: vk::Fence,
17149
0
    ) -> vk::Result {
17150
0
        let global = Self::instance();
17151
0
        // vkAcquireImageANDROID
17152
0
        let device_info = global.get_device_info(device).unwrap();
17153
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17154
0
        let layer_result = device_info
17155
0
            .customized_info
17156
0
            .borrow()
17157
0
            .hooks()
17158
0
            .acquire_image_android(image, native_fence_fd, semaphore, fence);
17159
0
        match layer_result {
17160
0
            LayerResult::Handled(res) => match res {
17161
0
                Ok(()) => vk::Result::SUCCESS,
17162
0
                Err(e) => e,
17163
            },
17164
            LayerResult::Unhandled => unsafe {
17165
0
                (dispatch_table.acquire_image_android)(
17166
0
                    device,
17167
0
                    image,
17168
0
                    native_fence_fd,
17169
0
                    semaphore,
17170
0
                    fence,
17171
0
                )
17172
            },
17173
        }
17174
0
    }
17175
0
    extern "system" fn queue_signal_release_image_android(
17176
0
        queue: vk::Queue,
17177
0
        wait_semaphore_count: u32,
17178
0
        p_wait_semaphores: *const vk::Semaphore,
17179
0
        image: vk::Image,
17180
0
        p_native_fence_fd: *mut c_int,
17181
0
    ) -> vk::Result {
17182
0
        let global = Self::instance();
17183
0
        // vkQueueSignalReleaseImageANDROID
17184
0
        let device_info = global.get_device_info(queue).unwrap();
17185
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17186
0
        let layer_result = device_info
17187
0
            .customized_info
17188
0
            .borrow()
17189
0
            .hooks()
17190
0
            .queue_signal_release_image_android(
17191
0
                queue,
17192
0
                unsafe { slice_from_raw_parts(p_wait_semaphores, wait_semaphore_count) },
17193
0
                image,
17194
0
            );
17195
0
        match layer_result {
17196
0
            LayerResult::Handled(res) => match res {
17197
0
                Ok(res) => {
17198
0
                    *unsafe { p_native_fence_fd.as_mut() }.unwrap() = res;
17199
0
                    vk::Result::SUCCESS
17200
                }
17201
0
                Err(e) => e,
17202
            },
17203
            LayerResult::Unhandled => unsafe {
17204
0
                (dispatch_table.queue_signal_release_image_android)(
17205
0
                    queue,
17206
0
                    wait_semaphore_count,
17207
0
                    p_wait_semaphores,
17208
0
                    image,
17209
0
                    p_native_fence_fd,
17210
0
                )
17211
            },
17212
        }
17213
0
    }
17214
0
    extern "system" fn get_swapchain_gralloc_usage2_android(
17215
0
        device: vk::Device,
17216
0
        format: vk::Format,
17217
0
        image_usage: vk::ImageUsageFlags,
17218
0
        swapchain_image_usage: vk::SwapchainImageUsageFlagsANDROID,
17219
0
        gralloc_consumer_usage: *mut u64,
17220
0
        gralloc_producer_usage: *mut u64,
17221
0
    ) -> vk::Result {
17222
0
        let global = Self::instance();
17223
0
        // vkGetSwapchainGrallocUsage2ANDROID
17224
0
        let device_info = global.get_device_info(device).unwrap();
17225
0
        let dispatch_table = &device_info.dispatch_table.android_native_buffer;
17226
0
        let layer_result = device_info
17227
0
            .customized_info
17228
0
            .borrow()
17229
0
            .hooks()
17230
0
            .get_swapchain_gralloc_usage2_android(
17231
0
                format,
17232
0
                image_usage,
17233
0
                swapchain_image_usage,
17234
0
                unsafe { ptr_as_uninit_mut(gralloc_consumer_usage) }.unwrap(),
17235
0
            );
17236
0
        match layer_result {
17237
0
            LayerResult::Handled(res) => match res {
17238
0
                Ok(res) => {
17239
0
                    *unsafe { gralloc_producer_usage.as_mut() }.unwrap() = res;
17240
0
                    vk::Result::SUCCESS
17241
                }
17242
0
                Err(e) => e,
17243
            },
17244
            LayerResult::Unhandled => unsafe {
17245
0
                (dispatch_table.get_swapchain_gralloc_usage2_android)(
17246
0
                    device,
17247
0
                    format,
17248
0
                    image_usage,
17249
0
                    swapchain_image_usage,
17250
0
                    gralloc_consumer_usage,
17251
0
                    gralloc_producer_usage,
17252
0
                )
17253
            },
17254
        }
17255
0
    }
17256
0
    extern "system" fn debug_marker_set_object_tag_ext(
17257
0
        device: vk::Device,
17258
0
        p_tag_info: *const vk::DebugMarkerObjectTagInfoEXT,
17259
0
    ) -> vk::Result {
17260
0
        let global = Self::instance();
17261
0
        // vkDebugMarkerSetObjectTagEXT
17262
0
        let device_info = global.get_device_info(device).unwrap();
17263
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17264
0
        let layer_result = device_info
17265
0
            .customized_info
17266
0
            .borrow()
17267
0
            .hooks()
17268
0
            .debug_marker_set_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
17269
0
        match layer_result {
17270
0
            LayerResult::Handled(res) => match res {
17271
0
                Ok(()) => vk::Result::SUCCESS,
17272
0
                Err(e) => e,
17273
            },
17274
            LayerResult::Unhandled => unsafe {
17275
0
                (dispatch_table.debug_marker_set_object_tag_ext)(device, p_tag_info)
17276
            },
17277
        }
17278
0
    }
17279
0
    extern "system" fn debug_marker_set_object_name_ext(
17280
0
        device: vk::Device,
17281
0
        p_name_info: *const vk::DebugMarkerObjectNameInfoEXT,
17282
0
    ) -> vk::Result {
17283
0
        let global = Self::instance();
17284
0
        // vkDebugMarkerSetObjectNameEXT
17285
0
        let device_info = global.get_device_info(device).unwrap();
17286
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17287
0
        let layer_result = device_info
17288
0
            .customized_info
17289
0
            .borrow()
17290
0
            .hooks()
17291
0
            .debug_marker_set_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
17292
0
        match layer_result {
17293
0
            LayerResult::Handled(res) => match res {
17294
0
                Ok(()) => vk::Result::SUCCESS,
17295
0
                Err(e) => e,
17296
            },
17297
            LayerResult::Unhandled => unsafe {
17298
0
                (dispatch_table.debug_marker_set_object_name_ext)(device, p_name_info)
17299
            },
17300
        }
17301
0
    }
17302
0
    extern "system" fn cmd_debug_marker_begin_ext(
17303
0
        command_buffer: vk::CommandBuffer,
17304
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17305
0
    ) {
17306
0
        let global = Self::instance();
17307
0
        // vkCmdDebugMarkerBeginEXT
17308
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17309
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17310
0
        let layer_result = device_info
17311
0
            .customized_info
17312
0
            .borrow()
17313
0
            .hooks()
17314
0
            .cmd_debug_marker_begin_ext(command_buffer, unsafe { p_marker_info.as_ref() }.unwrap());
17315
0
        match layer_result {
17316
0
            LayerResult::Handled(res) => res,
17317
            LayerResult::Unhandled => unsafe {
17318
0
                (dispatch_table.cmd_debug_marker_begin_ext)(command_buffer, p_marker_info)
17319
            },
17320
        }
17321
0
    }
17322
0
    extern "system" fn cmd_debug_marker_end_ext(command_buffer: vk::CommandBuffer) {
17323
0
        let global = Self::instance();
17324
0
        // vkCmdDebugMarkerEndEXT
17325
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17326
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17327
0
        let layer_result = device_info
17328
0
            .customized_info
17329
0
            .borrow()
17330
0
            .hooks()
17331
0
            .cmd_debug_marker_end_ext(command_buffer);
17332
0
        match layer_result {
17333
0
            LayerResult::Handled(res) => res,
17334
            LayerResult::Unhandled => unsafe {
17335
0
                (dispatch_table.cmd_debug_marker_end_ext)(command_buffer)
17336
            },
17337
        }
17338
0
    }
17339
0
    extern "system" fn cmd_debug_marker_insert_ext(
17340
0
        command_buffer: vk::CommandBuffer,
17341
0
        p_marker_info: *const vk::DebugMarkerMarkerInfoEXT,
17342
0
    ) {
17343
0
        let global = Self::instance();
17344
0
        // vkCmdDebugMarkerInsertEXT
17345
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17346
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_marker;
17347
0
        let layer_result = device_info
17348
0
            .customized_info
17349
0
            .borrow()
17350
0
            .hooks()
17351
0
            .cmd_debug_marker_insert_ext(
17352
0
                command_buffer,
17353
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
17354
0
            );
17355
0
        match layer_result {
17356
0
            LayerResult::Handled(res) => res,
17357
            LayerResult::Unhandled => unsafe {
17358
0
                (dispatch_table.cmd_debug_marker_insert_ext)(command_buffer, p_marker_info)
17359
            },
17360
        }
17361
0
    }
17362
0
    extern "system" fn cmd_bind_transform_feedback_buffers_ext(
17363
0
        command_buffer: vk::CommandBuffer,
17364
0
        first_binding: u32,
17365
0
        binding_count: u32,
17366
0
        p_buffers: *const vk::Buffer,
17367
0
        p_offsets: *const vk::DeviceSize,
17368
0
        p_sizes: *const vk::DeviceSize,
17369
0
    ) {
17370
0
        let global = Self::instance();
17371
0
        // vkCmdBindTransformFeedbackBuffersEXT
17372
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17373
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17374
0
        let layer_result = device_info
17375
0
            .customized_info
17376
0
            .borrow()
17377
0
            .hooks()
17378
0
            .cmd_bind_transform_feedback_buffers_ext(
17379
0
                command_buffer,
17380
0
                first_binding,
17381
0
                unsafe { slice_from_raw_parts(p_buffers, binding_count) },
17382
0
                unsafe { slice_from_raw_parts(p_offsets, binding_count) },
17383
0
                unsafe { maybe_slice_from_raw_parts(p_sizes, binding_count) },
17384
0
            );
17385
0
        match layer_result {
17386
0
            LayerResult::Handled(res) => res,
17387
            LayerResult::Unhandled => unsafe {
17388
0
                (dispatch_table.cmd_bind_transform_feedback_buffers_ext)(
17389
0
                    command_buffer,
17390
0
                    first_binding,
17391
0
                    binding_count,
17392
0
                    p_buffers,
17393
0
                    p_offsets,
17394
0
                    p_sizes,
17395
0
                )
17396
            },
17397
        }
17398
0
    }
17399
0
    extern "system" fn cmd_begin_transform_feedback_ext(
17400
0
        command_buffer: vk::CommandBuffer,
17401
0
        first_counter_buffer: u32,
17402
0
        counter_buffer_count: u32,
17403
0
        p_counter_buffers: *const vk::Buffer,
17404
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17405
0
    ) {
17406
0
        let global = Self::instance();
17407
0
        // vkCmdBeginTransformFeedbackEXT
17408
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17409
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17410
0
        let layer_result = device_info
17411
0
            .customized_info
17412
0
            .borrow()
17413
0
            .hooks()
17414
0
            .cmd_begin_transform_feedback_ext(
17415
0
                command_buffer,
17416
0
                first_counter_buffer,
17417
0
                unsafe { slice_from_raw_parts(p_counter_buffers, counter_buffer_count) },
17418
0
                unsafe {
17419
0
                    maybe_slice_from_raw_parts(p_counter_buffer_offsets, counter_buffer_count)
17420
0
                },
17421
0
            );
17422
0
        match layer_result {
17423
0
            LayerResult::Handled(res) => res,
17424
            LayerResult::Unhandled => unsafe {
17425
0
                (dispatch_table.cmd_begin_transform_feedback_ext)(
17426
0
                    command_buffer,
17427
0
                    first_counter_buffer,
17428
0
                    counter_buffer_count,
17429
0
                    p_counter_buffers,
17430
0
                    p_counter_buffer_offsets,
17431
0
                )
17432
            },
17433
        }
17434
0
    }
17435
0
    extern "system" fn cmd_end_transform_feedback_ext(
17436
0
        command_buffer: vk::CommandBuffer,
17437
0
        first_counter_buffer: u32,
17438
0
        counter_buffer_count: u32,
17439
0
        p_counter_buffers: *const vk::Buffer,
17440
0
        p_counter_buffer_offsets: *const vk::DeviceSize,
17441
0
    ) {
17442
0
        let global = Self::instance();
17443
0
        // vkCmdEndTransformFeedbackEXT
17444
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17445
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17446
0
        let layer_result = device_info
17447
0
            .customized_info
17448
0
            .borrow()
17449
0
            .hooks()
17450
0
            .cmd_end_transform_feedback_ext(
17451
0
                command_buffer,
17452
0
                first_counter_buffer,
17453
0
                unsafe { slice_from_raw_parts(p_counter_buffers, counter_buffer_count) },
17454
0
                unsafe {
17455
0
                    maybe_slice_from_raw_parts(p_counter_buffer_offsets, counter_buffer_count)
17456
0
                },
17457
0
            );
17458
0
        match layer_result {
17459
0
            LayerResult::Handled(res) => res,
17460
            LayerResult::Unhandled => unsafe {
17461
0
                (dispatch_table.cmd_end_transform_feedback_ext)(
17462
0
                    command_buffer,
17463
0
                    first_counter_buffer,
17464
0
                    counter_buffer_count,
17465
0
                    p_counter_buffers,
17466
0
                    p_counter_buffer_offsets,
17467
0
                )
17468
            },
17469
        }
17470
0
    }
17471
0
    extern "system" fn cmd_begin_query_indexed_ext(
17472
0
        command_buffer: vk::CommandBuffer,
17473
0
        query_pool: vk::QueryPool,
17474
0
        query: u32,
17475
0
        flags: vk::QueryControlFlags,
17476
0
        index: u32,
17477
0
    ) {
17478
0
        let global = Self::instance();
17479
0
        // vkCmdBeginQueryIndexedEXT
17480
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17481
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17482
0
        let layer_result = device_info
17483
0
            .customized_info
17484
0
            .borrow()
17485
0
            .hooks()
17486
0
            .cmd_begin_query_indexed_ext(command_buffer, query_pool, query, flags, index);
17487
0
        match layer_result {
17488
0
            LayerResult::Handled(res) => res,
17489
            LayerResult::Unhandled => unsafe {
17490
0
                (dispatch_table.cmd_begin_query_indexed_ext)(
17491
0
                    command_buffer,
17492
0
                    query_pool,
17493
0
                    query,
17494
0
                    flags,
17495
0
                    index,
17496
0
                )
17497
            },
17498
        }
17499
0
    }
17500
0
    extern "system" fn cmd_end_query_indexed_ext(
17501
0
        command_buffer: vk::CommandBuffer,
17502
0
        query_pool: vk::QueryPool,
17503
0
        query: u32,
17504
0
        index: u32,
17505
0
    ) {
17506
0
        let global = Self::instance();
17507
0
        // vkCmdEndQueryIndexedEXT
17508
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17509
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17510
0
        let layer_result = device_info
17511
0
            .customized_info
17512
0
            .borrow()
17513
0
            .hooks()
17514
0
            .cmd_end_query_indexed_ext(command_buffer, query_pool, query, index);
17515
0
        match layer_result {
17516
0
            LayerResult::Handled(res) => res,
17517
            LayerResult::Unhandled => unsafe {
17518
0
                (dispatch_table.cmd_end_query_indexed_ext)(command_buffer, query_pool, query, index)
17519
            },
17520
        }
17521
0
    }
17522
0
    extern "system" fn cmd_draw_indirect_byte_count_ext(
17523
0
        command_buffer: vk::CommandBuffer,
17524
0
        instance_count: u32,
17525
0
        first_instance: u32,
17526
0
        counter_buffer: vk::Buffer,
17527
0
        counter_buffer_offset: vk::DeviceSize,
17528
0
        counter_offset: u32,
17529
0
        vertex_stride: u32,
17530
0
    ) {
17531
0
        let global = Self::instance();
17532
0
        // vkCmdDrawIndirectByteCountEXT
17533
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17534
0
        let dispatch_table = &device_info.dispatch_table.ext_transform_feedback;
17535
0
        let layer_result = device_info
17536
0
            .customized_info
17537
0
            .borrow()
17538
0
            .hooks()
17539
0
            .cmd_draw_indirect_byte_count_ext(
17540
0
                command_buffer,
17541
0
                instance_count,
17542
0
                first_instance,
17543
0
                counter_buffer,
17544
0
                counter_buffer_offset,
17545
0
                counter_offset,
17546
0
                vertex_stride,
17547
0
            );
17548
0
        match layer_result {
17549
0
            LayerResult::Handled(res) => res,
17550
            LayerResult::Unhandled => unsafe {
17551
0
                (dispatch_table.cmd_draw_indirect_byte_count_ext)(
17552
0
                    command_buffer,
17553
0
                    instance_count,
17554
0
                    first_instance,
17555
0
                    counter_buffer,
17556
0
                    counter_buffer_offset,
17557
0
                    counter_offset,
17558
0
                    vertex_stride,
17559
0
                )
17560
            },
17561
        }
17562
0
    }
17563
0
    extern "system" fn create_cu_module_nvx(
17564
0
        device: vk::Device,
17565
0
        p_create_info: *const vk::CuModuleCreateInfoNVX,
17566
0
        p_allocator: *const vk::AllocationCallbacks,
17567
0
        p_module: *mut vk::CuModuleNVX,
17568
0
    ) -> vk::Result {
17569
0
        let global = Self::instance();
17570
0
        // vkCreateCuModuleNVX
17571
0
        let device_info = global.get_device_info(device).unwrap();
17572
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17573
0
        let layer_result = device_info
17574
0
            .customized_info
17575
0
            .borrow()
17576
0
            .hooks()
17577
0
            .create_cu_module_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17578
0
                p_allocator.as_ref()
17579
0
            });
17580
0
        match layer_result {
17581
0
            LayerResult::Handled(res) => match res {
17582
0
                Ok(res) => {
17583
0
                    *unsafe { p_module.as_mut() }.unwrap() = res;
17584
0
                    vk::Result::SUCCESS
17585
                }
17586
0
                Err(e) => e,
17587
            },
17588
            LayerResult::Unhandled => unsafe {
17589
0
                (dispatch_table.create_cu_module_nvx)(device, p_create_info, p_allocator, p_module)
17590
            },
17591
        }
17592
0
    }
17593
0
    extern "system" fn create_cu_function_nvx(
17594
0
        device: vk::Device,
17595
0
        p_create_info: *const vk::CuFunctionCreateInfoNVX,
17596
0
        p_allocator: *const vk::AllocationCallbacks,
17597
0
        p_function: *mut vk::CuFunctionNVX,
17598
0
    ) -> vk::Result {
17599
0
        let global = Self::instance();
17600
0
        // vkCreateCuFunctionNVX
17601
0
        let device_info = global.get_device_info(device).unwrap();
17602
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17603
0
        let layer_result = device_info
17604
0
            .customized_info
17605
0
            .borrow()
17606
0
            .hooks()
17607
0
            .create_cu_function_nvx(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
17608
0
                p_allocator.as_ref()
17609
0
            });
17610
0
        match layer_result {
17611
0
            LayerResult::Handled(res) => match res {
17612
0
                Ok(res) => {
17613
0
                    *unsafe { p_function.as_mut() }.unwrap() = res;
17614
0
                    vk::Result::SUCCESS
17615
                }
17616
0
                Err(e) => e,
17617
            },
17618
            LayerResult::Unhandled => unsafe {
17619
0
                (dispatch_table.create_cu_function_nvx)(
17620
0
                    device,
17621
0
                    p_create_info,
17622
0
                    p_allocator,
17623
0
                    p_function,
17624
0
                )
17625
            },
17626
        }
17627
0
    }
17628
0
    extern "system" fn destroy_cu_module_nvx(
17629
0
        device: vk::Device,
17630
0
        module: vk::CuModuleNVX,
17631
0
        p_allocator: *const vk::AllocationCallbacks,
17632
0
    ) {
17633
0
        let global = Self::instance();
17634
0
        // vkDestroyCuModuleNVX
17635
0
        let device_info = global.get_device_info(device).unwrap();
17636
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17637
0
        let layer_result = device_info
17638
0
            .customized_info
17639
0
            .borrow()
17640
0
            .hooks()
17641
0
            .destroy_cu_module_nvx(module, unsafe { p_allocator.as_ref() });
17642
0
        match layer_result {
17643
0
            LayerResult::Handled(res) => res,
17644
            LayerResult::Unhandled => unsafe {
17645
0
                (dispatch_table.destroy_cu_module_nvx)(device, module, p_allocator)
17646
            },
17647
        }
17648
0
    }
17649
0
    extern "system" fn destroy_cu_function_nvx(
17650
0
        device: vk::Device,
17651
0
        function: vk::CuFunctionNVX,
17652
0
        p_allocator: *const vk::AllocationCallbacks,
17653
0
    ) {
17654
0
        let global = Self::instance();
17655
0
        // vkDestroyCuFunctionNVX
17656
0
        let device_info = global.get_device_info(device).unwrap();
17657
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17658
0
        let layer_result = device_info
17659
0
            .customized_info
17660
0
            .borrow()
17661
0
            .hooks()
17662
0
            .destroy_cu_function_nvx(function, unsafe { p_allocator.as_ref() });
17663
0
        match layer_result {
17664
0
            LayerResult::Handled(res) => res,
17665
            LayerResult::Unhandled => unsafe {
17666
0
                (dispatch_table.destroy_cu_function_nvx)(device, function, p_allocator)
17667
            },
17668
        }
17669
0
    }
17670
0
    extern "system" fn cmd_cu_launch_kernel_nvx(
17671
0
        command_buffer: vk::CommandBuffer,
17672
0
        p_launch_info: *const vk::CuLaunchInfoNVX,
17673
0
    ) {
17674
0
        let global = Self::instance();
17675
0
        // vkCmdCuLaunchKernelNVX
17676
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17677
0
        let dispatch_table = &device_info.dispatch_table.nvx_binary_import;
17678
0
        let layer_result = device_info
17679
0
            .customized_info
17680
0
            .borrow()
17681
0
            .hooks()
17682
0
            .cmd_cu_launch_kernel_nvx(command_buffer, unsafe { p_launch_info.as_ref() }.unwrap());
17683
0
        match layer_result {
17684
0
            LayerResult::Handled(res) => res,
17685
            LayerResult::Unhandled => unsafe {
17686
0
                (dispatch_table.cmd_cu_launch_kernel_nvx)(command_buffer, p_launch_info)
17687
            },
17688
        }
17689
0
    }
17690
0
    extern "system" fn get_image_view_handle_nvx(
17691
0
        device: vk::Device,
17692
0
        p_info: *const vk::ImageViewHandleInfoNVX,
17693
0
    ) -> u32 {
17694
0
        let global = Self::instance();
17695
0
        // vkGetImageViewHandleNVX
17696
0
        let device_info = global.get_device_info(device).unwrap();
17697
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
17698
0
        let layer_result = device_info
17699
0
            .customized_info
17700
0
            .borrow()
17701
0
            .hooks()
17702
0
            .get_image_view_handle_nvx(unsafe { p_info.as_ref() }.unwrap());
17703
0
        match layer_result {
17704
0
            LayerResult::Handled(res) => res,
17705
            LayerResult::Unhandled => unsafe {
17706
0
                (dispatch_table.get_image_view_handle_nvx)(device, p_info)
17707
            },
17708
        }
17709
0
    }
17710
0
    extern "system" fn get_image_view_address_nvx(
17711
0
        device: vk::Device,
17712
0
        image_view: vk::ImageView,
17713
0
        p_properties: *mut vk::ImageViewAddressPropertiesNVX,
17714
0
    ) -> vk::Result {
17715
0
        let global = Self::instance();
17716
0
        // vkGetImageViewAddressNVX
17717
0
        let device_info = global.get_device_info(device).unwrap();
17718
0
        let dispatch_table = &device_info.dispatch_table.nvx_image_view_handle;
17719
0
        let layer_result = device_info
17720
0
            .customized_info
17721
0
            .borrow()
17722
0
            .hooks()
17723
0
            .get_image_view_address_nvx(
17724
0
                image_view,
17725
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
17726
0
            );
17727
0
        match layer_result {
17728
0
            LayerResult::Handled(res) => match res {
17729
0
                Ok(()) => vk::Result::SUCCESS,
17730
0
                Err(e) => e,
17731
            },
17732
            LayerResult::Unhandled => unsafe {
17733
0
                (dispatch_table.get_image_view_address_nvx)(device, image_view, p_properties)
17734
            },
17735
        }
17736
0
    }
17737
0
    extern "system" fn get_shader_info_amd(
17738
0
        device: vk::Device,
17739
0
        pipeline: vk::Pipeline,
17740
0
        shader_stage: vk::ShaderStageFlags,
17741
0
        info_type: vk::ShaderInfoTypeAMD,
17742
0
        p_info_size: *mut usize,
17743
0
        p_info: *mut c_void,
17744
0
    ) -> vk::Result {
17745
0
        let global = Self::instance();
17746
0
        // vkGetShaderInfoAMD
17747
0
        let device_info = global.get_device_info(device).unwrap();
17748
0
        let dispatch_table = &device_info.dispatch_table.amd_shader_info;
17749
0
        let layer_result = device_info
17750
0
            .customized_info
17751
0
            .borrow()
17752
0
            .hooks()
17753
0
            .get_shader_info_amd(
17754
0
                pipeline,
17755
0
                shader_stage,
17756
0
                info_type,
17757
0
                unsafe { ptr_as_uninit_mut(p_info_size) }.unwrap(),
17758
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_info as *mut u8, p_info_size) },
17759
0
            );
17760
0
        match layer_result {
17761
0
            LayerResult::Handled(res) => match res {
17762
0
                Ok(()) => vk::Result::SUCCESS,
17763
0
                Err(e) => e,
17764
            },
17765
            LayerResult::Unhandled => unsafe {
17766
0
                (dispatch_table.get_shader_info_amd)(
17767
0
                    device,
17768
0
                    pipeline,
17769
0
                    shader_stage,
17770
0
                    info_type,
17771
0
                    p_info_size,
17772
0
                    p_info,
17773
0
                )
17774
            },
17775
        }
17776
0
    }
17777
0
    extern "system" fn get_memory_win32_handle_nv(
17778
0
        device: vk::Device,
17779
0
        memory: vk::DeviceMemory,
17780
0
        handle_type: vk::ExternalMemoryHandleTypeFlagsNV,
17781
0
        p_handle: *mut vk::HANDLE,
17782
0
    ) -> vk::Result {
17783
0
        let global = Self::instance();
17784
0
        // vkGetMemoryWin32HandleNV
17785
0
        let device_info = global.get_device_info(device).unwrap();
17786
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_win32;
17787
0
        let layer_result = device_info
17788
0
            .customized_info
17789
0
            .borrow()
17790
0
            .hooks()
17791
0
            .get_memory_win32_handle_nv(memory, handle_type);
17792
0
        match layer_result {
17793
0
            LayerResult::Handled(res) => match res {
17794
0
                Ok(res) => {
17795
0
                    *unsafe { p_handle.as_mut() }.unwrap() = res;
17796
0
                    vk::Result::SUCCESS
17797
                }
17798
0
                Err(e) => e,
17799
            },
17800
            LayerResult::Unhandled => unsafe {
17801
0
                (dispatch_table.get_memory_win32_handle_nv)(device, memory, handle_type, p_handle)
17802
            },
17803
        }
17804
0
    }
17805
0
    extern "system" fn cmd_begin_conditional_rendering_ext(
17806
0
        command_buffer: vk::CommandBuffer,
17807
0
        p_conditional_rendering_begin: *const vk::ConditionalRenderingBeginInfoEXT,
17808
0
    ) {
17809
0
        let global = Self::instance();
17810
0
        // vkCmdBeginConditionalRenderingEXT
17811
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17812
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
17813
0
        let layer_result = device_info
17814
0
            .customized_info
17815
0
            .borrow()
17816
0
            .hooks()
17817
0
            .cmd_begin_conditional_rendering_ext(
17818
0
                command_buffer,
17819
0
                unsafe { p_conditional_rendering_begin.as_ref() }.unwrap(),
17820
0
            );
17821
0
        match layer_result {
17822
0
            LayerResult::Handled(res) => res,
17823
            LayerResult::Unhandled => unsafe {
17824
0
                (dispatch_table.cmd_begin_conditional_rendering_ext)(
17825
0
                    command_buffer,
17826
0
                    p_conditional_rendering_begin,
17827
0
                )
17828
            },
17829
        }
17830
0
    }
17831
0
    extern "system" fn cmd_end_conditional_rendering_ext(command_buffer: vk::CommandBuffer) {
17832
0
        let global = Self::instance();
17833
0
        // vkCmdEndConditionalRenderingEXT
17834
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17835
0
        let dispatch_table = &device_info.dispatch_table.ext_conditional_rendering;
17836
0
        let layer_result = device_info
17837
0
            .customized_info
17838
0
            .borrow()
17839
0
            .hooks()
17840
0
            .cmd_end_conditional_rendering_ext(command_buffer);
17841
0
        match layer_result {
17842
0
            LayerResult::Handled(res) => res,
17843
            LayerResult::Unhandled => unsafe {
17844
0
                (dispatch_table.cmd_end_conditional_rendering_ext)(command_buffer)
17845
            },
17846
        }
17847
0
    }
17848
0
    extern "system" fn cmd_set_viewport_w_scaling_nv(
17849
0
        command_buffer: vk::CommandBuffer,
17850
0
        first_viewport: u32,
17851
0
        viewport_count: u32,
17852
0
        p_viewport_w_scalings: *const vk::ViewportWScalingNV,
17853
0
    ) {
17854
0
        let global = Self::instance();
17855
0
        // vkCmdSetViewportWScalingNV
17856
0
        let device_info = global.get_device_info(command_buffer).unwrap();
17857
0
        let dispatch_table = &device_info.dispatch_table.nv_clip_space_w_scaling;
17858
0
        let layer_result = device_info
17859
0
            .customized_info
17860
0
            .borrow()
17861
0
            .hooks()
17862
0
            .cmd_set_viewport_w_scaling_nv(command_buffer, first_viewport, unsafe {
17863
0
                slice_from_raw_parts(p_viewport_w_scalings, viewport_count)
17864
0
            });
17865
0
        match layer_result {
17866
0
            LayerResult::Handled(res) => res,
17867
            LayerResult::Unhandled => unsafe {
17868
0
                (dispatch_table.cmd_set_viewport_w_scaling_nv)(
17869
0
                    command_buffer,
17870
0
                    first_viewport,
17871
0
                    viewport_count,
17872
0
                    p_viewport_w_scalings,
17873
0
                )
17874
            },
17875
        }
17876
0
    }
17877
0
    extern "system" fn display_power_control_ext(
17878
0
        device: vk::Device,
17879
0
        display: vk::DisplayKHR,
17880
0
        p_display_power_info: *const vk::DisplayPowerInfoEXT,
17881
0
    ) -> vk::Result {
17882
0
        let global = Self::instance();
17883
0
        // vkDisplayPowerControlEXT
17884
0
        let device_info = global.get_device_info(device).unwrap();
17885
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17886
0
        let layer_result = device_info
17887
0
            .customized_info
17888
0
            .borrow()
17889
0
            .hooks()
17890
0
            .display_power_control_ext(display, unsafe { p_display_power_info.as_ref() }.unwrap());
17891
0
        match layer_result {
17892
0
            LayerResult::Handled(res) => match res {
17893
0
                Ok(()) => vk::Result::SUCCESS,
17894
0
                Err(e) => e,
17895
            },
17896
            LayerResult::Unhandled => unsafe {
17897
0
                (dispatch_table.display_power_control_ext)(device, display, p_display_power_info)
17898
            },
17899
        }
17900
0
    }
17901
0
    extern "system" fn register_device_event_ext(
17902
0
        device: vk::Device,
17903
0
        p_device_event_info: *const vk::DeviceEventInfoEXT,
17904
0
        p_allocator: *const vk::AllocationCallbacks,
17905
0
        p_fence: *mut vk::Fence,
17906
0
    ) -> vk::Result {
17907
0
        let global = Self::instance();
17908
0
        // vkRegisterDeviceEventEXT
17909
0
        let device_info = global.get_device_info(device).unwrap();
17910
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17911
0
        let layer_result = device_info
17912
0
            .customized_info
17913
0
            .borrow()
17914
0
            .hooks()
17915
0
            .register_device_event_ext(unsafe { p_device_event_info.as_ref() }.unwrap(), unsafe {
17916
0
                p_allocator.as_ref()
17917
0
            });
17918
0
        match layer_result {
17919
0
            LayerResult::Handled(res) => match res {
17920
0
                Ok(res) => {
17921
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
17922
0
                    vk::Result::SUCCESS
17923
                }
17924
0
                Err(e) => e,
17925
            },
17926
            LayerResult::Unhandled => unsafe {
17927
0
                (dispatch_table.register_device_event_ext)(
17928
0
                    device,
17929
0
                    p_device_event_info,
17930
0
                    p_allocator,
17931
0
                    p_fence,
17932
0
                )
17933
            },
17934
        }
17935
0
    }
17936
0
    extern "system" fn register_display_event_ext(
17937
0
        device: vk::Device,
17938
0
        display: vk::DisplayKHR,
17939
0
        p_display_event_info: *const vk::DisplayEventInfoEXT,
17940
0
        p_allocator: *const vk::AllocationCallbacks,
17941
0
        p_fence: *mut vk::Fence,
17942
0
    ) -> vk::Result {
17943
0
        let global = Self::instance();
17944
0
        // vkRegisterDisplayEventEXT
17945
0
        let device_info = global.get_device_info(device).unwrap();
17946
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17947
0
        let layer_result = device_info
17948
0
            .customized_info
17949
0
            .borrow()
17950
0
            .hooks()
17951
0
            .register_display_event_ext(
17952
0
                display,
17953
0
                unsafe { p_display_event_info.as_ref() }.unwrap(),
17954
0
                unsafe { p_allocator.as_ref() },
17955
0
            );
17956
0
        match layer_result {
17957
0
            LayerResult::Handled(res) => match res {
17958
0
                Ok(res) => {
17959
0
                    *unsafe { p_fence.as_mut() }.unwrap() = res;
17960
0
                    vk::Result::SUCCESS
17961
                }
17962
0
                Err(e) => e,
17963
            },
17964
            LayerResult::Unhandled => unsafe {
17965
0
                (dispatch_table.register_display_event_ext)(
17966
0
                    device,
17967
0
                    display,
17968
0
                    p_display_event_info,
17969
0
                    p_allocator,
17970
0
                    p_fence,
17971
0
                )
17972
            },
17973
        }
17974
0
    }
17975
0
    extern "system" fn get_swapchain_counter_ext(
17976
0
        device: vk::Device,
17977
0
        swapchain: vk::SwapchainKHR,
17978
0
        counter: vk::SurfaceCounterFlagsEXT,
17979
0
        p_counter_value: *mut u64,
17980
0
    ) -> vk::Result {
17981
0
        let global = Self::instance();
17982
0
        // vkGetSwapchainCounterEXT
17983
0
        let device_info = global.get_device_info(device).unwrap();
17984
0
        let dispatch_table = &device_info.dispatch_table.ext_display_control;
17985
0
        let layer_result = device_info
17986
0
            .customized_info
17987
0
            .borrow()
17988
0
            .hooks()
17989
0
            .get_swapchain_counter_ext(swapchain, counter);
17990
0
        match layer_result {
17991
0
            LayerResult::Handled(res) => match res {
17992
0
                Ok(res) => {
17993
0
                    *unsafe { p_counter_value.as_mut() }.unwrap() = res;
17994
0
                    vk::Result::SUCCESS
17995
                }
17996
0
                Err(e) => e,
17997
            },
17998
            LayerResult::Unhandled => unsafe {
17999
0
                (dispatch_table.get_swapchain_counter_ext)(
18000
0
                    device,
18001
0
                    swapchain,
18002
0
                    counter,
18003
0
                    p_counter_value,
18004
0
                )
18005
            },
18006
        }
18007
0
    }
18008
0
    extern "system" fn get_refresh_cycle_duration_google(
18009
0
        device: vk::Device,
18010
0
        swapchain: vk::SwapchainKHR,
18011
0
        p_display_timing_properties: *mut vk::RefreshCycleDurationGOOGLE,
18012
0
    ) -> vk::Result {
18013
0
        let global = Self::instance();
18014
0
        // vkGetRefreshCycleDurationGOOGLE
18015
0
        let device_info = global.get_device_info(device).unwrap();
18016
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18017
0
        let layer_result = device_info
18018
0
            .customized_info
18019
0
            .borrow()
18020
0
            .hooks()
18021
0
            .get_refresh_cycle_duration_google(
18022
0
                swapchain,
18023
0
                unsafe { ptr_as_uninit_mut(p_display_timing_properties) }.unwrap(),
18024
0
            );
18025
0
        match layer_result {
18026
0
            LayerResult::Handled(res) => match res {
18027
0
                Ok(()) => vk::Result::SUCCESS,
18028
0
                Err(e) => e,
18029
            },
18030
            LayerResult::Unhandled => unsafe {
18031
0
                (dispatch_table.get_refresh_cycle_duration_google)(
18032
0
                    device,
18033
0
                    swapchain,
18034
0
                    p_display_timing_properties,
18035
0
                )
18036
            },
18037
        }
18038
0
    }
18039
0
    extern "system" fn get_past_presentation_timing_google(
18040
0
        device: vk::Device,
18041
0
        swapchain: vk::SwapchainKHR,
18042
0
        p_presentation_timing_count: *mut u32,
18043
0
        p_presentation_timings: *mut vk::PastPresentationTimingGOOGLE,
18044
0
    ) -> vk::Result {
18045
0
        let global = Self::instance();
18046
0
        // vkGetPastPresentationTimingGOOGLE
18047
0
        let device_info = global.get_device_info(device).unwrap();
18048
0
        let dispatch_table = &device_info.dispatch_table.google_display_timing;
18049
0
        let layer_result = device_info
18050
0
            .customized_info
18051
0
            .borrow()
18052
0
            .hooks()
18053
0
            .get_past_presentation_timing_google(
18054
0
                swapchain,
18055
0
                unsafe { ptr_as_uninit_mut(p_presentation_timing_count) }.unwrap(),
18056
0
                unsafe {
18057
0
                    maybe_uninit_slice_from_raw_parts_mut(
18058
0
                        p_presentation_timings,
18059
0
                        p_presentation_timing_count,
18060
0
                    )
18061
0
                },
18062
0
            );
18063
0
        match layer_result {
18064
0
            LayerResult::Handled(res) => match res {
18065
0
                Ok(()) => vk::Result::SUCCESS,
18066
0
                Err(e) => e,
18067
            },
18068
            LayerResult::Unhandled => unsafe {
18069
0
                (dispatch_table.get_past_presentation_timing_google)(
18070
0
                    device,
18071
0
                    swapchain,
18072
0
                    p_presentation_timing_count,
18073
0
                    p_presentation_timings,
18074
0
                )
18075
            },
18076
        }
18077
0
    }
18078
0
    extern "system" fn cmd_set_discard_rectangle_ext(
18079
0
        command_buffer: vk::CommandBuffer,
18080
0
        first_discard_rectangle: u32,
18081
0
        discard_rectangle_count: u32,
18082
0
        p_discard_rectangles: *const vk::Rect2D,
18083
0
    ) {
18084
0
        let global = Self::instance();
18085
0
        // vkCmdSetDiscardRectangleEXT
18086
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18087
0
        let dispatch_table = &device_info.dispatch_table.ext_discard_rectangles;
18088
0
        let layer_result = device_info
18089
0
            .customized_info
18090
0
            .borrow()
18091
0
            .hooks()
18092
0
            .cmd_set_discard_rectangle_ext(command_buffer, first_discard_rectangle, unsafe {
18093
0
                slice_from_raw_parts(p_discard_rectangles, discard_rectangle_count)
18094
0
            });
18095
0
        match layer_result {
18096
0
            LayerResult::Handled(res) => res,
18097
            LayerResult::Unhandled => unsafe {
18098
0
                (dispatch_table.cmd_set_discard_rectangle_ext)(
18099
0
                    command_buffer,
18100
0
                    first_discard_rectangle,
18101
0
                    discard_rectangle_count,
18102
0
                    p_discard_rectangles,
18103
0
                )
18104
            },
18105
        }
18106
0
    }
18107
0
    extern "system" fn set_hdr_metadata_ext(
18108
0
        device: vk::Device,
18109
0
        swapchain_count: u32,
18110
0
        p_swapchains: *const vk::SwapchainKHR,
18111
0
        p_metadata: *const vk::HdrMetadataEXT,
18112
0
    ) {
18113
0
        let global = Self::instance();
18114
0
        // vkSetHdrMetadataEXT
18115
0
        let device_info = global.get_device_info(device).unwrap();
18116
0
        let dispatch_table = &device_info.dispatch_table.ext_hdr_metadata;
18117
0
        let layer_result = device_info
18118
0
            .customized_info
18119
0
            .borrow()
18120
0
            .hooks()
18121
0
            .set_hdr_metadata_ext(
18122
0
                unsafe { slice_from_raw_parts(p_swapchains, swapchain_count) },
18123
0
                unsafe { slice_from_raw_parts(p_metadata, swapchain_count) },
18124
0
            );
18125
0
        match layer_result {
18126
0
            LayerResult::Handled(res) => res,
18127
            LayerResult::Unhandled => unsafe {
18128
0
                (dispatch_table.set_hdr_metadata_ext)(
18129
0
                    device,
18130
0
                    swapchain_count,
18131
0
                    p_swapchains,
18132
0
                    p_metadata,
18133
0
                )
18134
            },
18135
        }
18136
0
    }
18137
0
    extern "system" fn set_debug_utils_object_name_ext(
18138
0
        device: vk::Device,
18139
0
        p_name_info: *const vk::DebugUtilsObjectNameInfoEXT,
18140
0
    ) -> vk::Result {
18141
0
        let global = Self::instance();
18142
0
        // vkSetDebugUtilsObjectNameEXT
18143
0
        let device_info = global.get_device_info(device).unwrap();
18144
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18145
0
        let layer_result = device_info
18146
0
            .customized_info
18147
0
            .borrow()
18148
0
            .hooks()
18149
0
            .set_debug_utils_object_name_ext(unsafe { p_name_info.as_ref() }.unwrap());
18150
0
        match layer_result {
18151
0
            LayerResult::Handled(res) => match res {
18152
0
                Ok(()) => vk::Result::SUCCESS,
18153
0
                Err(e) => e,
18154
            },
18155
            LayerResult::Unhandled => unsafe {
18156
0
                (dispatch_table.set_debug_utils_object_name_ext)(device, p_name_info)
18157
            },
18158
        }
18159
0
    }
18160
0
    extern "system" fn set_debug_utils_object_tag_ext(
18161
0
        device: vk::Device,
18162
0
        p_tag_info: *const vk::DebugUtilsObjectTagInfoEXT,
18163
0
    ) -> vk::Result {
18164
0
        let global = Self::instance();
18165
0
        // vkSetDebugUtilsObjectTagEXT
18166
0
        let device_info = global.get_device_info(device).unwrap();
18167
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18168
0
        let layer_result = device_info
18169
0
            .customized_info
18170
0
            .borrow()
18171
0
            .hooks()
18172
0
            .set_debug_utils_object_tag_ext(unsafe { p_tag_info.as_ref() }.unwrap());
18173
0
        match layer_result {
18174
0
            LayerResult::Handled(res) => match res {
18175
0
                Ok(()) => vk::Result::SUCCESS,
18176
0
                Err(e) => e,
18177
            },
18178
            LayerResult::Unhandled => unsafe {
18179
0
                (dispatch_table.set_debug_utils_object_tag_ext)(device, p_tag_info)
18180
            },
18181
        }
18182
0
    }
18183
0
    extern "system" fn queue_begin_debug_utils_label_ext(
18184
0
        queue: vk::Queue,
18185
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18186
0
    ) {
18187
0
        let global = Self::instance();
18188
0
        // vkQueueBeginDebugUtilsLabelEXT
18189
0
        let device_info = global.get_device_info(queue).unwrap();
18190
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18191
0
        let layer_result = device_info
18192
0
            .customized_info
18193
0
            .borrow()
18194
0
            .hooks()
18195
0
            .queue_begin_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18196
0
        match layer_result {
18197
0
            LayerResult::Handled(res) => res,
18198
            LayerResult::Unhandled => unsafe {
18199
0
                (dispatch_table.queue_begin_debug_utils_label_ext)(queue, p_label_info)
18200
            },
18201
        }
18202
0
    }
18203
0
    extern "system" fn queue_end_debug_utils_label_ext(queue: vk::Queue) {
18204
0
        let global = Self::instance();
18205
0
        // vkQueueEndDebugUtilsLabelEXT
18206
0
        let device_info = global.get_device_info(queue).unwrap();
18207
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18208
0
        let layer_result = device_info
18209
0
            .customized_info
18210
0
            .borrow()
18211
0
            .hooks()
18212
0
            .queue_end_debug_utils_label_ext(queue);
18213
0
        match layer_result {
18214
0
            LayerResult::Handled(res) => res,
18215
            LayerResult::Unhandled => unsafe {
18216
0
                (dispatch_table.queue_end_debug_utils_label_ext)(queue)
18217
            },
18218
        }
18219
0
    }
18220
0
    extern "system" fn queue_insert_debug_utils_label_ext(
18221
0
        queue: vk::Queue,
18222
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18223
0
    ) {
18224
0
        let global = Self::instance();
18225
0
        // vkQueueInsertDebugUtilsLabelEXT
18226
0
        let device_info = global.get_device_info(queue).unwrap();
18227
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18228
0
        let layer_result = device_info
18229
0
            .customized_info
18230
0
            .borrow()
18231
0
            .hooks()
18232
0
            .queue_insert_debug_utils_label_ext(queue, unsafe { p_label_info.as_ref() }.unwrap());
18233
0
        match layer_result {
18234
0
            LayerResult::Handled(res) => res,
18235
            LayerResult::Unhandled => unsafe {
18236
0
                (dispatch_table.queue_insert_debug_utils_label_ext)(queue, p_label_info)
18237
            },
18238
        }
18239
0
    }
18240
0
    extern "system" fn cmd_begin_debug_utils_label_ext(
18241
0
        command_buffer: vk::CommandBuffer,
18242
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18243
0
    ) {
18244
0
        let global = Self::instance();
18245
0
        // vkCmdBeginDebugUtilsLabelEXT
18246
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18247
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18248
0
        let layer_result = device_info
18249
0
            .customized_info
18250
0
            .borrow()
18251
0
            .hooks()
18252
0
            .cmd_begin_debug_utils_label_ext(
18253
0
                command_buffer,
18254
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18255
0
            );
18256
0
        match layer_result {
18257
0
            LayerResult::Handled(res) => res,
18258
            LayerResult::Unhandled => unsafe {
18259
0
                (dispatch_table.cmd_begin_debug_utils_label_ext)(command_buffer, p_label_info)
18260
            },
18261
        }
18262
0
    }
18263
0
    extern "system" fn cmd_end_debug_utils_label_ext(command_buffer: vk::CommandBuffer) {
18264
0
        let global = Self::instance();
18265
0
        // vkCmdEndDebugUtilsLabelEXT
18266
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18267
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18268
0
        let layer_result = device_info
18269
0
            .customized_info
18270
0
            .borrow()
18271
0
            .hooks()
18272
0
            .cmd_end_debug_utils_label_ext(command_buffer);
18273
0
        match layer_result {
18274
0
            LayerResult::Handled(res) => res,
18275
            LayerResult::Unhandled => unsafe {
18276
0
                (dispatch_table.cmd_end_debug_utils_label_ext)(command_buffer)
18277
            },
18278
        }
18279
0
    }
18280
0
    extern "system" fn cmd_insert_debug_utils_label_ext(
18281
0
        command_buffer: vk::CommandBuffer,
18282
0
        p_label_info: *const vk::DebugUtilsLabelEXT,
18283
0
    ) {
18284
0
        let global = Self::instance();
18285
0
        // vkCmdInsertDebugUtilsLabelEXT
18286
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18287
0
        let dispatch_table = &device_info.dispatch_table.ext_debug_utils;
18288
0
        let layer_result = device_info
18289
0
            .customized_info
18290
0
            .borrow()
18291
0
            .hooks()
18292
0
            .cmd_insert_debug_utils_label_ext(
18293
0
                command_buffer,
18294
0
                unsafe { p_label_info.as_ref() }.unwrap(),
18295
0
            );
18296
0
        match layer_result {
18297
0
            LayerResult::Handled(res) => res,
18298
            LayerResult::Unhandled => unsafe {
18299
0
                (dispatch_table.cmd_insert_debug_utils_label_ext)(command_buffer, p_label_info)
18300
            },
18301
        }
18302
0
    }
18303
0
    extern "system" fn get_android_hardware_buffer_properties_android(
18304
0
        device: vk::Device,
18305
0
        buffer: *const vk::AHardwareBuffer,
18306
0
        p_properties: *mut vk::AndroidHardwareBufferPropertiesANDROID,
18307
0
    ) -> vk::Result {
18308
0
        let global = Self::instance();
18309
0
        // vkGetAndroidHardwareBufferPropertiesANDROID
18310
0
        let device_info = global.get_device_info(device).unwrap();
18311
0
        let dispatch_table = &device_info
18312
0
            .dispatch_table
18313
0
            .android_external_memory_android_hardware_buffer;
18314
0
        let layer_result = device_info
18315
0
            .customized_info
18316
0
            .borrow()
18317
0
            .hooks()
18318
0
            .get_android_hardware_buffer_properties_android(
18319
0
                buffer,
18320
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
18321
0
            );
18322
0
        match layer_result {
18323
0
            LayerResult::Handled(res) => match res {
18324
0
                Ok(()) => vk::Result::SUCCESS,
18325
0
                Err(e) => e,
18326
            },
18327
            LayerResult::Unhandled => unsafe {
18328
0
                (dispatch_table.get_android_hardware_buffer_properties_android)(
18329
0
                    device,
18330
0
                    buffer,
18331
0
                    p_properties,
18332
0
                )
18333
            },
18334
        }
18335
0
    }
18336
0
    extern "system" fn get_memory_android_hardware_buffer_android(
18337
0
        device: vk::Device,
18338
0
        p_info: *const vk::MemoryGetAndroidHardwareBufferInfoANDROID,
18339
0
        p_buffer: *mut *mut vk::AHardwareBuffer,
18340
0
    ) -> vk::Result {
18341
0
        let global = Self::instance();
18342
0
        // vkGetMemoryAndroidHardwareBufferANDROID
18343
0
        let device_info = global.get_device_info(device).unwrap();
18344
0
        let dispatch_table = &device_info
18345
0
            .dispatch_table
18346
0
            .android_external_memory_android_hardware_buffer;
18347
0
        let layer_result = device_info
18348
0
            .customized_info
18349
0
            .borrow()
18350
0
            .hooks()
18351
0
            .get_memory_android_hardware_buffer_android(unsafe { p_info.as_ref() }.unwrap());
18352
0
        match layer_result {
18353
0
            LayerResult::Handled(res) => match res {
18354
0
                Ok(res) => {
18355
0
                    *unsafe { p_buffer.as_mut() }.unwrap() = res;
18356
0
                    vk::Result::SUCCESS
18357
                }
18358
0
                Err(e) => e,
18359
            },
18360
            LayerResult::Unhandled => unsafe {
18361
0
                (dispatch_table.get_memory_android_hardware_buffer_android)(
18362
0
                    device, p_info, p_buffer,
18363
0
                )
18364
            },
18365
        }
18366
0
    }
18367
0
    extern "system" fn cmd_set_sample_locations_ext(
18368
0
        command_buffer: vk::CommandBuffer,
18369
0
        p_sample_locations_info: *const vk::SampleLocationsInfoEXT,
18370
0
    ) {
18371
0
        let global = Self::instance();
18372
0
        // vkCmdSetSampleLocationsEXT
18373
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18374
0
        let dispatch_table = &device_info.dispatch_table.ext_sample_locations;
18375
0
        let layer_result = device_info
18376
0
            .customized_info
18377
0
            .borrow()
18378
0
            .hooks()
18379
0
            .cmd_set_sample_locations_ext(
18380
0
                command_buffer,
18381
0
                unsafe { p_sample_locations_info.as_ref() }.unwrap(),
18382
0
            );
18383
0
        match layer_result {
18384
0
            LayerResult::Handled(res) => res,
18385
            LayerResult::Unhandled => unsafe {
18386
0
                (dispatch_table.cmd_set_sample_locations_ext)(
18387
0
                    command_buffer,
18388
0
                    p_sample_locations_info,
18389
0
                )
18390
            },
18391
        }
18392
0
    }
18393
0
    extern "system" fn get_image_drm_format_modifier_properties_ext(
18394
0
        device: vk::Device,
18395
0
        image: vk::Image,
18396
0
        p_properties: *mut vk::ImageDrmFormatModifierPropertiesEXT,
18397
0
    ) -> vk::Result {
18398
0
        let global = Self::instance();
18399
0
        // vkGetImageDrmFormatModifierPropertiesEXT
18400
0
        let device_info = global.get_device_info(device).unwrap();
18401
0
        let dispatch_table = &device_info.dispatch_table.ext_image_drm_format_modifier;
18402
0
        let layer_result = device_info
18403
0
            .customized_info
18404
0
            .borrow()
18405
0
            .hooks()
18406
0
            .get_image_drm_format_modifier_properties_ext(
18407
0
                image,
18408
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
18409
0
            );
18410
0
        match layer_result {
18411
0
            LayerResult::Handled(res) => match res {
18412
0
                Ok(()) => vk::Result::SUCCESS,
18413
0
                Err(e) => e,
18414
            },
18415
            LayerResult::Unhandled => unsafe {
18416
0
                (dispatch_table.get_image_drm_format_modifier_properties_ext)(
18417
0
                    device,
18418
0
                    image,
18419
0
                    p_properties,
18420
0
                )
18421
            },
18422
        }
18423
0
    }
18424
0
    extern "system" fn create_validation_cache_ext(
18425
0
        device: vk::Device,
18426
0
        p_create_info: *const vk::ValidationCacheCreateInfoEXT,
18427
0
        p_allocator: *const vk::AllocationCallbacks,
18428
0
        p_validation_cache: *mut vk::ValidationCacheEXT,
18429
0
    ) -> vk::Result {
18430
0
        let global = Self::instance();
18431
0
        // vkCreateValidationCacheEXT
18432
0
        let device_info = global.get_device_info(device).unwrap();
18433
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18434
0
        let layer_result = device_info
18435
0
            .customized_info
18436
0
            .borrow()
18437
0
            .hooks()
18438
0
            .create_validation_cache_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18439
0
                p_allocator.as_ref()
18440
0
            });
18441
0
        match layer_result {
18442
0
            LayerResult::Handled(res) => match res {
18443
0
                Ok(res) => {
18444
0
                    *unsafe { p_validation_cache.as_mut() }.unwrap() = res;
18445
0
                    vk::Result::SUCCESS
18446
                }
18447
0
                Err(e) => e,
18448
            },
18449
            LayerResult::Unhandled => unsafe {
18450
0
                (dispatch_table.create_validation_cache_ext)(
18451
0
                    device,
18452
0
                    p_create_info,
18453
0
                    p_allocator,
18454
0
                    p_validation_cache,
18455
0
                )
18456
            },
18457
        }
18458
0
    }
18459
0
    extern "system" fn destroy_validation_cache_ext(
18460
0
        device: vk::Device,
18461
0
        validation_cache: vk::ValidationCacheEXT,
18462
0
        p_allocator: *const vk::AllocationCallbacks,
18463
0
    ) {
18464
0
        let global = Self::instance();
18465
0
        // vkDestroyValidationCacheEXT
18466
0
        let device_info = global.get_device_info(device).unwrap();
18467
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18468
0
        let layer_result = device_info
18469
0
            .customized_info
18470
0
            .borrow()
18471
0
            .hooks()
18472
0
            .destroy_validation_cache_ext(validation_cache, unsafe { p_allocator.as_ref() });
18473
0
        match layer_result {
18474
0
            LayerResult::Handled(res) => res,
18475
            LayerResult::Unhandled => unsafe {
18476
0
                (dispatch_table.destroy_validation_cache_ext)(device, validation_cache, p_allocator)
18477
            },
18478
        }
18479
0
    }
18480
0
    extern "system" fn merge_validation_caches_ext(
18481
0
        device: vk::Device,
18482
0
        dst_cache: vk::ValidationCacheEXT,
18483
0
        src_cache_count: u32,
18484
0
        p_src_caches: *const vk::ValidationCacheEXT,
18485
0
    ) -> vk::Result {
18486
0
        let global = Self::instance();
18487
0
        // vkMergeValidationCachesEXT
18488
0
        let device_info = global.get_device_info(device).unwrap();
18489
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18490
0
        let layer_result = device_info
18491
0
            .customized_info
18492
0
            .borrow()
18493
0
            .hooks()
18494
0
            .merge_validation_caches_ext(dst_cache, unsafe {
18495
0
                slice_from_raw_parts(p_src_caches, src_cache_count)
18496
0
            });
18497
0
        match layer_result {
18498
0
            LayerResult::Handled(res) => match res {
18499
0
                Ok(()) => vk::Result::SUCCESS,
18500
0
                Err(e) => e,
18501
            },
18502
            LayerResult::Unhandled => unsafe {
18503
0
                (dispatch_table.merge_validation_caches_ext)(
18504
0
                    device,
18505
0
                    dst_cache,
18506
0
                    src_cache_count,
18507
0
                    p_src_caches,
18508
0
                )
18509
            },
18510
        }
18511
0
    }
18512
0
    extern "system" fn get_validation_cache_data_ext(
18513
0
        device: vk::Device,
18514
0
        validation_cache: vk::ValidationCacheEXT,
18515
0
        p_data_size: *mut usize,
18516
0
        p_data: *mut c_void,
18517
0
    ) -> vk::Result {
18518
0
        let global = Self::instance();
18519
0
        // vkGetValidationCacheDataEXT
18520
0
        let device_info = global.get_device_info(device).unwrap();
18521
0
        let dispatch_table = &device_info.dispatch_table.ext_validation_cache;
18522
0
        let layer_result = device_info
18523
0
            .customized_info
18524
0
            .borrow()
18525
0
            .hooks()
18526
0
            .get_validation_cache_data_ext(
18527
0
                validation_cache,
18528
0
                unsafe { ptr_as_uninit_mut(p_data_size) }.unwrap(),
18529
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_data as *mut u8, p_data_size) },
18530
0
            );
18531
0
        match layer_result {
18532
0
            LayerResult::Handled(res) => match res {
18533
0
                Ok(()) => vk::Result::SUCCESS,
18534
0
                Err(e) => e,
18535
            },
18536
            LayerResult::Unhandled => unsafe {
18537
0
                (dispatch_table.get_validation_cache_data_ext)(
18538
0
                    device,
18539
0
                    validation_cache,
18540
0
                    p_data_size,
18541
0
                    p_data,
18542
0
                )
18543
            },
18544
        }
18545
0
    }
18546
0
    extern "system" fn cmd_bind_shading_rate_image_nv(
18547
0
        command_buffer: vk::CommandBuffer,
18548
0
        image_view: vk::ImageView,
18549
0
        image_layout: vk::ImageLayout,
18550
0
    ) {
18551
0
        let global = Self::instance();
18552
0
        // vkCmdBindShadingRateImageNV
18553
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18554
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18555
0
        let layer_result = device_info
18556
0
            .customized_info
18557
0
            .borrow()
18558
0
            .hooks()
18559
0
            .cmd_bind_shading_rate_image_nv(command_buffer, image_view, image_layout);
18560
0
        match layer_result {
18561
0
            LayerResult::Handled(res) => res,
18562
            LayerResult::Unhandled => unsafe {
18563
0
                (dispatch_table.cmd_bind_shading_rate_image_nv)(
18564
0
                    command_buffer,
18565
0
                    image_view,
18566
0
                    image_layout,
18567
0
                )
18568
            },
18569
        }
18570
0
    }
18571
0
    extern "system" fn cmd_set_viewport_shading_rate_palette_nv(
18572
0
        command_buffer: vk::CommandBuffer,
18573
0
        first_viewport: u32,
18574
0
        viewport_count: u32,
18575
0
        p_shading_rate_palettes: *const vk::ShadingRatePaletteNV,
18576
0
    ) {
18577
0
        let global = Self::instance();
18578
0
        // vkCmdSetViewportShadingRatePaletteNV
18579
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18580
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18581
0
        let layer_result = device_info
18582
0
            .customized_info
18583
0
            .borrow()
18584
0
            .hooks()
18585
0
            .cmd_set_viewport_shading_rate_palette_nv(command_buffer, first_viewport, unsafe {
18586
0
                slice_from_raw_parts(p_shading_rate_palettes, viewport_count)
18587
0
            });
18588
0
        match layer_result {
18589
0
            LayerResult::Handled(res) => res,
18590
            LayerResult::Unhandled => unsafe {
18591
0
                (dispatch_table.cmd_set_viewport_shading_rate_palette_nv)(
18592
0
                    command_buffer,
18593
0
                    first_viewport,
18594
0
                    viewport_count,
18595
0
                    p_shading_rate_palettes,
18596
0
                )
18597
            },
18598
        }
18599
0
    }
18600
0
    extern "system" fn cmd_set_coarse_sample_order_nv(
18601
0
        command_buffer: vk::CommandBuffer,
18602
0
        sample_order_type: vk::CoarseSampleOrderTypeNV,
18603
0
        custom_sample_order_count: u32,
18604
0
        p_custom_sample_orders: *const vk::CoarseSampleOrderCustomNV,
18605
0
    ) {
18606
0
        let global = Self::instance();
18607
0
        // vkCmdSetCoarseSampleOrderNV
18608
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18609
0
        let dispatch_table = &device_info.dispatch_table.nv_shading_rate_image;
18610
0
        let layer_result = device_info
18611
0
            .customized_info
18612
0
            .borrow()
18613
0
            .hooks()
18614
0
            .cmd_set_coarse_sample_order_nv(command_buffer, sample_order_type, unsafe {
18615
0
                slice_from_raw_parts(p_custom_sample_orders, custom_sample_order_count)
18616
0
            });
18617
0
        match layer_result {
18618
0
            LayerResult::Handled(res) => res,
18619
            LayerResult::Unhandled => unsafe {
18620
0
                (dispatch_table.cmd_set_coarse_sample_order_nv)(
18621
0
                    command_buffer,
18622
0
                    sample_order_type,
18623
0
                    custom_sample_order_count,
18624
0
                    p_custom_sample_orders,
18625
0
                )
18626
            },
18627
        }
18628
0
    }
18629
0
    extern "system" fn create_acceleration_structure_nv(
18630
0
        device: vk::Device,
18631
0
        p_create_info: *const vk::AccelerationStructureCreateInfoNV,
18632
0
        p_allocator: *const vk::AllocationCallbacks,
18633
0
        p_acceleration_structure: *mut vk::AccelerationStructureNV,
18634
0
    ) -> vk::Result {
18635
0
        let global = Self::instance();
18636
0
        // vkCreateAccelerationStructureNV
18637
0
        let device_info = global.get_device_info(device).unwrap();
18638
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18639
0
        let layer_result = device_info
18640
0
            .customized_info
18641
0
            .borrow()
18642
0
            .hooks()
18643
0
            .create_acceleration_structure_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
18644
0
                p_allocator.as_ref()
18645
0
            });
18646
0
        match layer_result {
18647
0
            LayerResult::Handled(res) => match res {
18648
0
                Ok(res) => {
18649
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
18650
0
                    vk::Result::SUCCESS
18651
                }
18652
0
                Err(e) => e,
18653
            },
18654
            LayerResult::Unhandled => unsafe {
18655
0
                (dispatch_table.create_acceleration_structure_nv)(
18656
0
                    device,
18657
0
                    p_create_info,
18658
0
                    p_allocator,
18659
0
                    p_acceleration_structure,
18660
0
                )
18661
            },
18662
        }
18663
0
    }
18664
0
    extern "system" fn destroy_acceleration_structure_nv(
18665
0
        device: vk::Device,
18666
0
        acceleration_structure: vk::AccelerationStructureNV,
18667
0
        p_allocator: *const vk::AllocationCallbacks,
18668
0
    ) {
18669
0
        let global = Self::instance();
18670
0
        // vkDestroyAccelerationStructureNV
18671
0
        let device_info = global.get_device_info(device).unwrap();
18672
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18673
0
        let layer_result = device_info
18674
0
            .customized_info
18675
0
            .borrow()
18676
0
            .hooks()
18677
0
            .destroy_acceleration_structure_nv(acceleration_structure, unsafe {
18678
0
                p_allocator.as_ref()
18679
0
            });
18680
0
        match layer_result {
18681
0
            LayerResult::Handled(res) => res,
18682
            LayerResult::Unhandled => unsafe {
18683
0
                (dispatch_table.destroy_acceleration_structure_nv)(
18684
0
                    device,
18685
0
                    acceleration_structure,
18686
0
                    p_allocator,
18687
0
                )
18688
            },
18689
        }
18690
0
    }
18691
0
    extern "system" fn get_acceleration_structure_memory_requirements_nv(
18692
0
        device: vk::Device,
18693
0
        p_info: *const vk::AccelerationStructureMemoryRequirementsInfoNV,
18694
0
        p_memory_requirements: *mut vk::MemoryRequirements2KHR,
18695
0
    ) {
18696
0
        let global = Self::instance();
18697
0
        // vkGetAccelerationStructureMemoryRequirementsNV
18698
0
        let device_info = global.get_device_info(device).unwrap();
18699
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18700
0
        let layer_result = device_info
18701
0
            .customized_info
18702
0
            .borrow()
18703
0
            .hooks()
18704
0
            .get_acceleration_structure_memory_requirements_nv(
18705
0
                unsafe { p_info.as_ref() }.unwrap(),
18706
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
18707
0
            );
18708
0
        match layer_result {
18709
0
            LayerResult::Handled(res) => res,
18710
            LayerResult::Unhandled => unsafe {
18711
0
                (dispatch_table.get_acceleration_structure_memory_requirements_nv)(
18712
0
                    device,
18713
0
                    p_info,
18714
0
                    p_memory_requirements,
18715
0
                )
18716
            },
18717
        }
18718
0
    }
18719
0
    extern "system" fn bind_acceleration_structure_memory_nv(
18720
0
        device: vk::Device,
18721
0
        bind_info_count: u32,
18722
0
        p_bind_infos: *const vk::BindAccelerationStructureMemoryInfoNV,
18723
0
    ) -> vk::Result {
18724
0
        let global = Self::instance();
18725
0
        // vkBindAccelerationStructureMemoryNV
18726
0
        let device_info = global.get_device_info(device).unwrap();
18727
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18728
0
        let layer_result = device_info
18729
0
            .customized_info
18730
0
            .borrow()
18731
0
            .hooks()
18732
0
            .bind_acceleration_structure_memory_nv(unsafe {
18733
0
                slice_from_raw_parts(p_bind_infos, bind_info_count)
18734
0
            });
18735
0
        match layer_result {
18736
0
            LayerResult::Handled(res) => match res {
18737
0
                Ok(()) => vk::Result::SUCCESS,
18738
0
                Err(e) => e,
18739
            },
18740
            LayerResult::Unhandled => unsafe {
18741
0
                (dispatch_table.bind_acceleration_structure_memory_nv)(
18742
0
                    device,
18743
0
                    bind_info_count,
18744
0
                    p_bind_infos,
18745
0
                )
18746
            },
18747
        }
18748
0
    }
18749
0
    extern "system" fn cmd_build_acceleration_structure_nv(
18750
0
        command_buffer: vk::CommandBuffer,
18751
0
        p_info: *const vk::AccelerationStructureInfoNV,
18752
0
        instance_data: vk::Buffer,
18753
0
        instance_offset: vk::DeviceSize,
18754
0
        update: vk::Bool32,
18755
0
        dst: vk::AccelerationStructureNV,
18756
0
        src: vk::AccelerationStructureNV,
18757
0
        scratch: vk::Buffer,
18758
0
        scratch_offset: vk::DeviceSize,
18759
0
    ) {
18760
0
        let global = Self::instance();
18761
0
        // vkCmdBuildAccelerationStructureNV
18762
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18763
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18764
0
        let layer_result = device_info
18765
0
            .customized_info
18766
0
            .borrow()
18767
0
            .hooks()
18768
0
            .cmd_build_acceleration_structure_nv(
18769
0
                command_buffer,
18770
0
                unsafe { p_info.as_ref() }.unwrap(),
18771
0
                instance_data,
18772
0
                instance_offset,
18773
0
                update == vk::TRUE,
18774
0
                dst,
18775
0
                src,
18776
0
                scratch,
18777
0
                scratch_offset,
18778
0
            );
18779
0
        match layer_result {
18780
0
            LayerResult::Handled(res) => res,
18781
            LayerResult::Unhandled => unsafe {
18782
0
                (dispatch_table.cmd_build_acceleration_structure_nv)(
18783
0
                    command_buffer,
18784
0
                    p_info,
18785
0
                    instance_data,
18786
0
                    instance_offset,
18787
0
                    update,
18788
0
                    dst,
18789
0
                    src,
18790
0
                    scratch,
18791
0
                    scratch_offset,
18792
0
                )
18793
            },
18794
        }
18795
0
    }
18796
0
    extern "system" fn cmd_copy_acceleration_structure_nv(
18797
0
        command_buffer: vk::CommandBuffer,
18798
0
        dst: vk::AccelerationStructureNV,
18799
0
        src: vk::AccelerationStructureNV,
18800
0
        mode: vk::CopyAccelerationStructureModeKHR,
18801
0
    ) {
18802
0
        let global = Self::instance();
18803
0
        // vkCmdCopyAccelerationStructureNV
18804
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18805
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18806
0
        let layer_result = device_info
18807
0
            .customized_info
18808
0
            .borrow()
18809
0
            .hooks()
18810
0
            .cmd_copy_acceleration_structure_nv(command_buffer, dst, src, mode);
18811
0
        match layer_result {
18812
0
            LayerResult::Handled(res) => res,
18813
            LayerResult::Unhandled => unsafe {
18814
0
                (dispatch_table.cmd_copy_acceleration_structure_nv)(command_buffer, dst, src, mode)
18815
            },
18816
        }
18817
0
    }
18818
0
    extern "system" fn cmd_trace_rays_nv(
18819
0
        command_buffer: vk::CommandBuffer,
18820
0
        raygen_shader_binding_table_buffer: vk::Buffer,
18821
0
        raygen_shader_binding_offset: vk::DeviceSize,
18822
0
        miss_shader_binding_table_buffer: vk::Buffer,
18823
0
        miss_shader_binding_offset: vk::DeviceSize,
18824
0
        miss_shader_binding_stride: vk::DeviceSize,
18825
0
        hit_shader_binding_table_buffer: vk::Buffer,
18826
0
        hit_shader_binding_offset: vk::DeviceSize,
18827
0
        hit_shader_binding_stride: vk::DeviceSize,
18828
0
        callable_shader_binding_table_buffer: vk::Buffer,
18829
0
        callable_shader_binding_offset: vk::DeviceSize,
18830
0
        callable_shader_binding_stride: vk::DeviceSize,
18831
0
        width: u32,
18832
0
        height: u32,
18833
0
        depth: u32,
18834
0
    ) {
18835
0
        let global = Self::instance();
18836
0
        // vkCmdTraceRaysNV
18837
0
        let device_info = global.get_device_info(command_buffer).unwrap();
18838
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18839
0
        let layer_result = device_info
18840
0
            .customized_info
18841
0
            .borrow()
18842
0
            .hooks()
18843
0
            .cmd_trace_rays_nv(
18844
0
                command_buffer,
18845
0
                raygen_shader_binding_table_buffer,
18846
0
                raygen_shader_binding_offset,
18847
0
                miss_shader_binding_table_buffer,
18848
0
                miss_shader_binding_offset,
18849
0
                miss_shader_binding_stride,
18850
0
                hit_shader_binding_table_buffer,
18851
0
                hit_shader_binding_offset,
18852
0
                hit_shader_binding_stride,
18853
0
                callable_shader_binding_table_buffer,
18854
0
                callable_shader_binding_offset,
18855
0
                callable_shader_binding_stride,
18856
0
                width,
18857
0
                height,
18858
0
                depth,
18859
0
            );
18860
0
        match layer_result {
18861
0
            LayerResult::Handled(res) => res,
18862
            LayerResult::Unhandled => unsafe {
18863
0
                (dispatch_table.cmd_trace_rays_nv)(
18864
0
                    command_buffer,
18865
0
                    raygen_shader_binding_table_buffer,
18866
0
                    raygen_shader_binding_offset,
18867
0
                    miss_shader_binding_table_buffer,
18868
0
                    miss_shader_binding_offset,
18869
0
                    miss_shader_binding_stride,
18870
0
                    hit_shader_binding_table_buffer,
18871
0
                    hit_shader_binding_offset,
18872
0
                    hit_shader_binding_stride,
18873
0
                    callable_shader_binding_table_buffer,
18874
0
                    callable_shader_binding_offset,
18875
0
                    callable_shader_binding_stride,
18876
0
                    width,
18877
0
                    height,
18878
0
                    depth,
18879
0
                )
18880
            },
18881
        }
18882
0
    }
18883
0
    extern "system" fn create_ray_tracing_pipelines_nv(
18884
0
        device: vk::Device,
18885
0
        pipeline_cache: vk::PipelineCache,
18886
0
        create_info_count: u32,
18887
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoNV,
18888
0
        p_allocator: *const vk::AllocationCallbacks,
18889
0
        p_pipelines: *mut vk::Pipeline,
18890
0
    ) -> vk::Result {
18891
0
        let global = Self::instance();
18892
0
        // vkCreateRayTracingPipelinesNV
18893
0
        let device_info = global.get_device_info(device).unwrap();
18894
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18895
0
        let layer_result = device_info
18896
0
            .customized_info
18897
0
            .borrow()
18898
0
            .hooks()
18899
0
            .create_ray_tracing_pipelines_nv(
18900
0
                pipeline_cache,
18901
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
18902
0
                unsafe { p_allocator.as_ref() },
18903
0
            );
18904
0
        match layer_result {
18905
0
            LayerResult::Handled(res) => match res {
18906
0
                Ok(res) => {
18907
0
                    unsafe {
18908
0
                        std::slice::from_raw_parts_mut(
18909
0
                            p_pipelines,
18910
0
                            create_info_count.try_into().unwrap(),
18911
0
                        )
18912
0
                    }
18913
0
                    .copy_from_slice(&res);
18914
0
                    vk::Result::SUCCESS
18915
                }
18916
0
                Err(e) => e,
18917
            },
18918
            LayerResult::Unhandled => unsafe {
18919
0
                (dispatch_table.create_ray_tracing_pipelines_nv)(
18920
0
                    device,
18921
0
                    pipeline_cache,
18922
0
                    create_info_count,
18923
0
                    p_create_infos,
18924
0
                    p_allocator,
18925
0
                    p_pipelines,
18926
0
                )
18927
            },
18928
        }
18929
0
    }
18930
0
    extern "system" fn get_ray_tracing_shader_group_handles_khr(
18931
0
        device: vk::Device,
18932
0
        pipeline: vk::Pipeline,
18933
0
        first_group: u32,
18934
0
        group_count: u32,
18935
0
        data_size: usize,
18936
0
        p_data: *mut c_void,
18937
0
    ) -> vk::Result {
18938
0
        let global = Self::instance();
18939
0
        // vkGetRayTracingShaderGroupHandlesKHR
18940
0
        let device_info = global.get_device_info(device).unwrap();
18941
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
18942
0
        let layer_result = device_info
18943
0
            .customized_info
18944
0
            .borrow()
18945
0
            .hooks()
18946
0
            .get_ray_tracing_shader_group_handles_khr(pipeline, first_group, group_count, unsafe {
18947
0
                uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size)
18948
0
            });
18949
0
        match layer_result {
18950
0
            LayerResult::Handled(res) => match res {
18951
0
                Ok(()) => vk::Result::SUCCESS,
18952
0
                Err(e) => e,
18953
            },
18954
            LayerResult::Unhandled => unsafe {
18955
0
                (dispatch_table.get_ray_tracing_shader_group_handles_khr)(
18956
0
                    device,
18957
0
                    pipeline,
18958
0
                    first_group,
18959
0
                    group_count,
18960
0
                    data_size,
18961
0
                    p_data,
18962
0
                )
18963
            },
18964
        }
18965
0
    }
18966
0
    extern "system" fn get_acceleration_structure_handle_nv(
18967
0
        device: vk::Device,
18968
0
        acceleration_structure: vk::AccelerationStructureNV,
18969
0
        data_size: usize,
18970
0
        p_data: *mut c_void,
18971
0
    ) -> vk::Result {
18972
0
        let global = Self::instance();
18973
0
        // vkGetAccelerationStructureHandleNV
18974
0
        let device_info = global.get_device_info(device).unwrap();
18975
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
18976
0
        let layer_result = device_info
18977
0
            .customized_info
18978
0
            .borrow()
18979
0
            .hooks()
18980
0
            .get_acceleration_structure_handle_nv(acceleration_structure, unsafe {
18981
0
                uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size)
18982
0
            });
18983
0
        match layer_result {
18984
0
            LayerResult::Handled(res) => match res {
18985
0
                Ok(()) => vk::Result::SUCCESS,
18986
0
                Err(e) => e,
18987
            },
18988
            LayerResult::Unhandled => unsafe {
18989
0
                (dispatch_table.get_acceleration_structure_handle_nv)(
18990
0
                    device,
18991
0
                    acceleration_structure,
18992
0
                    data_size,
18993
0
                    p_data,
18994
0
                )
18995
            },
18996
        }
18997
0
    }
18998
0
    extern "system" fn cmd_write_acceleration_structures_properties_nv(
18999
0
        command_buffer: vk::CommandBuffer,
19000
0
        acceleration_structure_count: u32,
19001
0
        p_acceleration_structures: *const vk::AccelerationStructureNV,
19002
0
        query_type: vk::QueryType,
19003
0
        query_pool: vk::QueryPool,
19004
0
        first_query: u32,
19005
0
    ) {
19006
0
        let global = Self::instance();
19007
0
        // vkCmdWriteAccelerationStructuresPropertiesNV
19008
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19009
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19010
0
        let layer_result = device_info
19011
0
            .customized_info
19012
0
            .borrow()
19013
0
            .hooks()
19014
0
            .cmd_write_acceleration_structures_properties_nv(
19015
0
                command_buffer,
19016
0
                unsafe {
19017
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
19018
0
                },
19019
0
                query_type,
19020
0
                query_pool,
19021
0
                first_query,
19022
0
            );
19023
0
        match layer_result {
19024
0
            LayerResult::Handled(res) => res,
19025
            LayerResult::Unhandled => unsafe {
19026
0
                (dispatch_table.cmd_write_acceleration_structures_properties_nv)(
19027
0
                    command_buffer,
19028
0
                    acceleration_structure_count,
19029
0
                    p_acceleration_structures,
19030
0
                    query_type,
19031
0
                    query_pool,
19032
0
                    first_query,
19033
0
                )
19034
            },
19035
        }
19036
0
    }
19037
0
    extern "system" fn compile_deferred_nv(
19038
0
        device: vk::Device,
19039
0
        pipeline: vk::Pipeline,
19040
0
        shader: u32,
19041
0
    ) -> vk::Result {
19042
0
        let global = Self::instance();
19043
0
        // vkCompileDeferredNV
19044
0
        let device_info = global.get_device_info(device).unwrap();
19045
0
        let dispatch_table = &device_info.dispatch_table.nv_ray_tracing;
19046
0
        let layer_result = device_info
19047
0
            .customized_info
19048
0
            .borrow()
19049
0
            .hooks()
19050
0
            .compile_deferred_nv(pipeline, shader);
19051
0
        match layer_result {
19052
0
            LayerResult::Handled(res) => match res {
19053
0
                Ok(()) => vk::Result::SUCCESS,
19054
0
                Err(e) => e,
19055
            },
19056
            LayerResult::Unhandled => unsafe {
19057
0
                (dispatch_table.compile_deferred_nv)(device, pipeline, shader)
19058
            },
19059
        }
19060
0
    }
19061
0
    extern "system" fn get_memory_host_pointer_properties_ext(
19062
0
        device: vk::Device,
19063
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
19064
0
        p_host_pointer: *const c_void,
19065
0
        p_memory_host_pointer_properties: *mut vk::MemoryHostPointerPropertiesEXT,
19066
0
    ) -> vk::Result {
19067
0
        let global = Self::instance();
19068
0
        // vkGetMemoryHostPointerPropertiesEXT
19069
0
        let device_info = global.get_device_info(device).unwrap();
19070
0
        let dispatch_table = &device_info.dispatch_table.ext_external_memory_host;
19071
0
        let layer_result = device_info
19072
0
            .customized_info
19073
0
            .borrow()
19074
0
            .hooks()
19075
0
            .get_memory_host_pointer_properties_ext(
19076
0
                handle_type,
19077
0
                p_host_pointer,
19078
0
                unsafe { ptr_as_uninit_mut(p_memory_host_pointer_properties) }.unwrap(),
19079
0
            );
19080
0
        match layer_result {
19081
0
            LayerResult::Handled(res) => match res {
19082
0
                Ok(()) => vk::Result::SUCCESS,
19083
0
                Err(e) => e,
19084
            },
19085
            LayerResult::Unhandled => unsafe {
19086
0
                (dispatch_table.get_memory_host_pointer_properties_ext)(
19087
0
                    device,
19088
0
                    handle_type,
19089
0
                    p_host_pointer,
19090
0
                    p_memory_host_pointer_properties,
19091
0
                )
19092
            },
19093
        }
19094
0
    }
19095
0
    extern "system" fn cmd_write_buffer_marker_amd(
19096
0
        command_buffer: vk::CommandBuffer,
19097
0
        pipeline_stage: vk::PipelineStageFlags,
19098
0
        dst_buffer: vk::Buffer,
19099
0
        dst_offset: vk::DeviceSize,
19100
0
        marker: u32,
19101
0
    ) {
19102
0
        let global = Self::instance();
19103
0
        // vkCmdWriteBufferMarkerAMD
19104
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19105
0
        let dispatch_table = &device_info.dispatch_table.amd_buffer_marker;
19106
0
        let layer_result = device_info
19107
0
            .customized_info
19108
0
            .borrow()
19109
0
            .hooks()
19110
0
            .cmd_write_buffer_marker_amd(
19111
0
                command_buffer,
19112
0
                pipeline_stage,
19113
0
                dst_buffer,
19114
0
                dst_offset,
19115
0
                marker,
19116
0
            );
19117
0
        match layer_result {
19118
0
            LayerResult::Handled(res) => res,
19119
            LayerResult::Unhandled => unsafe {
19120
0
                (dispatch_table.cmd_write_buffer_marker_amd)(
19121
0
                    command_buffer,
19122
0
                    pipeline_stage,
19123
0
                    dst_buffer,
19124
0
                    dst_offset,
19125
0
                    marker,
19126
0
                )
19127
            },
19128
        }
19129
0
    }
19130
0
    extern "system" fn get_calibrated_timestamps_ext(
19131
0
        device: vk::Device,
19132
0
        timestamp_count: u32,
19133
0
        p_timestamp_infos: *const vk::CalibratedTimestampInfoEXT,
19134
0
        p_timestamps: *mut u64,
19135
0
        p_max_deviation: *mut u64,
19136
0
    ) -> vk::Result {
19137
0
        let global = Self::instance();
19138
0
        // vkGetCalibratedTimestampsEXT
19139
0
        let device_info = global.get_device_info(device).unwrap();
19140
0
        let dispatch_table = &device_info.dispatch_table.ext_calibrated_timestamps;
19141
0
        let layer_result = device_info
19142
0
            .customized_info
19143
0
            .borrow()
19144
0
            .hooks()
19145
0
            .get_calibrated_timestamps_ext(
19146
0
                unsafe { slice_from_raw_parts(p_timestamp_infos, timestamp_count) },
19147
0
                unsafe { uninit_slice_from_raw_parts_mut(p_timestamps, timestamp_count) },
19148
0
            );
19149
0
        match layer_result {
19150
0
            LayerResult::Handled(res) => match res {
19151
0
                Ok(res) => {
19152
0
                    *unsafe { p_max_deviation.as_mut() }.unwrap() = res;
19153
0
                    vk::Result::SUCCESS
19154
                }
19155
0
                Err(e) => e,
19156
            },
19157
            LayerResult::Unhandled => unsafe {
19158
0
                (dispatch_table.get_calibrated_timestamps_ext)(
19159
0
                    device,
19160
0
                    timestamp_count,
19161
0
                    p_timestamp_infos,
19162
0
                    p_timestamps,
19163
0
                    p_max_deviation,
19164
0
                )
19165
            },
19166
        }
19167
0
    }
19168
0
    extern "system" fn cmd_draw_mesh_tasks_nv(
19169
0
        command_buffer: vk::CommandBuffer,
19170
0
        task_count: u32,
19171
0
        first_task: u32,
19172
0
    ) {
19173
0
        let global = Self::instance();
19174
0
        // vkCmdDrawMeshTasksNV
19175
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19176
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19177
0
        let layer_result = device_info
19178
0
            .customized_info
19179
0
            .borrow()
19180
0
            .hooks()
19181
0
            .cmd_draw_mesh_tasks_nv(command_buffer, task_count, first_task);
19182
0
        match layer_result {
19183
0
            LayerResult::Handled(res) => res,
19184
            LayerResult::Unhandled => unsafe {
19185
0
                (dispatch_table.cmd_draw_mesh_tasks_nv)(command_buffer, task_count, first_task)
19186
            },
19187
        }
19188
0
    }
19189
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_nv(
19190
0
        command_buffer: vk::CommandBuffer,
19191
0
        buffer: vk::Buffer,
19192
0
        offset: vk::DeviceSize,
19193
0
        draw_count: u32,
19194
0
        stride: u32,
19195
0
    ) {
19196
0
        let global = Self::instance();
19197
0
        // vkCmdDrawMeshTasksIndirectNV
19198
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19199
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19200
0
        let layer_result = device_info
19201
0
            .customized_info
19202
0
            .borrow()
19203
0
            .hooks()
19204
0
            .cmd_draw_mesh_tasks_indirect_nv(command_buffer, buffer, offset, draw_count, stride);
19205
0
        match layer_result {
19206
0
            LayerResult::Handled(res) => res,
19207
            LayerResult::Unhandled => unsafe {
19208
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_nv)(
19209
0
                    command_buffer,
19210
0
                    buffer,
19211
0
                    offset,
19212
0
                    draw_count,
19213
0
                    stride,
19214
0
                )
19215
            },
19216
        }
19217
0
    }
19218
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_nv(
19219
0
        command_buffer: vk::CommandBuffer,
19220
0
        buffer: vk::Buffer,
19221
0
        offset: vk::DeviceSize,
19222
0
        count_buffer: vk::Buffer,
19223
0
        count_buffer_offset: vk::DeviceSize,
19224
0
        max_draw_count: u32,
19225
0
        stride: u32,
19226
0
    ) {
19227
0
        let global = Self::instance();
19228
0
        // vkCmdDrawMeshTasksIndirectCountNV
19229
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19230
0
        let dispatch_table = &device_info.dispatch_table.nv_mesh_shader;
19231
0
        let layer_result = device_info
19232
0
            .customized_info
19233
0
            .borrow()
19234
0
            .hooks()
19235
0
            .cmd_draw_mesh_tasks_indirect_count_nv(
19236
0
                command_buffer,
19237
0
                buffer,
19238
0
                offset,
19239
0
                count_buffer,
19240
0
                count_buffer_offset,
19241
0
                max_draw_count,
19242
0
                stride,
19243
0
            );
19244
0
        match layer_result {
19245
0
            LayerResult::Handled(res) => res,
19246
            LayerResult::Unhandled => unsafe {
19247
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_nv)(
19248
0
                    command_buffer,
19249
0
                    buffer,
19250
0
                    offset,
19251
0
                    count_buffer,
19252
0
                    count_buffer_offset,
19253
0
                    max_draw_count,
19254
0
                    stride,
19255
0
                )
19256
            },
19257
        }
19258
0
    }
19259
0
    extern "system" fn cmd_set_exclusive_scissor_nv(
19260
0
        command_buffer: vk::CommandBuffer,
19261
0
        first_exclusive_scissor: u32,
19262
0
        exclusive_scissor_count: u32,
19263
0
        p_exclusive_scissors: *const vk::Rect2D,
19264
0
    ) {
19265
0
        let global = Self::instance();
19266
0
        // vkCmdSetExclusiveScissorNV
19267
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19268
0
        let dispatch_table = &device_info.dispatch_table.nv_scissor_exclusive;
19269
0
        let layer_result = device_info
19270
0
            .customized_info
19271
0
            .borrow()
19272
0
            .hooks()
19273
0
            .cmd_set_exclusive_scissor_nv(command_buffer, first_exclusive_scissor, unsafe {
19274
0
                slice_from_raw_parts(p_exclusive_scissors, exclusive_scissor_count)
19275
0
            });
19276
0
        match layer_result {
19277
0
            LayerResult::Handled(res) => res,
19278
            LayerResult::Unhandled => unsafe {
19279
0
                (dispatch_table.cmd_set_exclusive_scissor_nv)(
19280
0
                    command_buffer,
19281
0
                    first_exclusive_scissor,
19282
0
                    exclusive_scissor_count,
19283
0
                    p_exclusive_scissors,
19284
0
                )
19285
            },
19286
        }
19287
0
    }
19288
0
    extern "system" fn cmd_set_checkpoint_nv(
19289
0
        command_buffer: vk::CommandBuffer,
19290
0
        p_checkpoint_marker: *const c_void,
19291
0
    ) {
19292
0
        let global = Self::instance();
19293
0
        // vkCmdSetCheckpointNV
19294
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19295
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19296
0
        let layer_result = device_info
19297
0
            .customized_info
19298
0
            .borrow()
19299
0
            .hooks()
19300
0
            .cmd_set_checkpoint_nv(command_buffer, p_checkpoint_marker);
19301
0
        match layer_result {
19302
0
            LayerResult::Handled(res) => res,
19303
            LayerResult::Unhandled => unsafe {
19304
0
                (dispatch_table.cmd_set_checkpoint_nv)(command_buffer, p_checkpoint_marker)
19305
            },
19306
        }
19307
0
    }
19308
0
    extern "system" fn get_queue_checkpoint_data_nv(
19309
0
        queue: vk::Queue,
19310
0
        p_checkpoint_data_count: *mut u32,
19311
0
        p_checkpoint_data: *mut vk::CheckpointDataNV,
19312
0
    ) {
19313
0
        let global = Self::instance();
19314
0
        // vkGetQueueCheckpointDataNV
19315
0
        let device_info = global.get_device_info(queue).unwrap();
19316
0
        let dispatch_table = &device_info.dispatch_table.nv_device_diagnostic_checkpoints;
19317
0
        let layer_result = device_info
19318
0
            .customized_info
19319
0
            .borrow()
19320
0
            .hooks()
19321
0
            .get_queue_checkpoint_data_nv(
19322
0
                queue,
19323
0
                unsafe { ptr_as_uninit_mut(p_checkpoint_data_count) }.unwrap(),
19324
0
                unsafe {
19325
0
                    maybe_uninit_slice_from_raw_parts_mut(
19326
0
                        p_checkpoint_data,
19327
0
                        p_checkpoint_data_count,
19328
0
                    )
19329
0
                },
19330
0
            );
19331
0
        match layer_result {
19332
0
            LayerResult::Handled(res) => res,
19333
            LayerResult::Unhandled => unsafe {
19334
0
                (dispatch_table.get_queue_checkpoint_data_nv)(
19335
0
                    queue,
19336
0
                    p_checkpoint_data_count,
19337
0
                    p_checkpoint_data,
19338
0
                )
19339
            },
19340
        }
19341
0
    }
19342
0
    extern "system" fn initialize_performance_api_intel(
19343
0
        device: vk::Device,
19344
0
        p_initialize_info: *const vk::InitializePerformanceApiInfoINTEL,
19345
0
    ) -> vk::Result {
19346
0
        let global = Self::instance();
19347
0
        // vkInitializePerformanceApiINTEL
19348
0
        let device_info = global.get_device_info(device).unwrap();
19349
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19350
0
        let layer_result = device_info
19351
0
            .customized_info
19352
0
            .borrow()
19353
0
            .hooks()
19354
0
            .initialize_performance_api_intel(unsafe { p_initialize_info.as_ref() }.unwrap());
19355
0
        match layer_result {
19356
0
            LayerResult::Handled(res) => match res {
19357
0
                Ok(()) => vk::Result::SUCCESS,
19358
0
                Err(e) => e,
19359
            },
19360
            LayerResult::Unhandled => unsafe {
19361
0
                (dispatch_table.initialize_performance_api_intel)(device, p_initialize_info)
19362
            },
19363
        }
19364
0
    }
19365
0
    extern "system" fn uninitialize_performance_api_intel(device: vk::Device) {
19366
0
        let global = Self::instance();
19367
0
        // vkUninitializePerformanceApiINTEL
19368
0
        let device_info = global.get_device_info(device).unwrap();
19369
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19370
0
        let layer_result = device_info
19371
0
            .customized_info
19372
0
            .borrow()
19373
0
            .hooks()
19374
0
            .uninitialize_performance_api_intel();
19375
0
        match layer_result {
19376
0
            LayerResult::Handled(res) => res,
19377
            LayerResult::Unhandled => unsafe {
19378
0
                (dispatch_table.uninitialize_performance_api_intel)(device)
19379
            },
19380
        }
19381
0
    }
19382
0
    extern "system" fn cmd_set_performance_marker_intel(
19383
0
        command_buffer: vk::CommandBuffer,
19384
0
        p_marker_info: *const vk::PerformanceMarkerInfoINTEL,
19385
0
    ) -> vk::Result {
19386
0
        let global = Self::instance();
19387
0
        // vkCmdSetPerformanceMarkerINTEL
19388
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19389
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19390
0
        let layer_result = device_info
19391
0
            .customized_info
19392
0
            .borrow()
19393
0
            .hooks()
19394
0
            .cmd_set_performance_marker_intel(
19395
0
                command_buffer,
19396
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19397
0
            );
19398
0
        match layer_result {
19399
0
            LayerResult::Handled(res) => match res {
19400
0
                Ok(()) => vk::Result::SUCCESS,
19401
0
                Err(e) => e,
19402
            },
19403
            LayerResult::Unhandled => unsafe {
19404
0
                (dispatch_table.cmd_set_performance_marker_intel)(command_buffer, p_marker_info)
19405
            },
19406
        }
19407
0
    }
19408
0
    extern "system" fn cmd_set_performance_stream_marker_intel(
19409
0
        command_buffer: vk::CommandBuffer,
19410
0
        p_marker_info: *const vk::PerformanceStreamMarkerInfoINTEL,
19411
0
    ) -> vk::Result {
19412
0
        let global = Self::instance();
19413
0
        // vkCmdSetPerformanceStreamMarkerINTEL
19414
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19415
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19416
0
        let layer_result = device_info
19417
0
            .customized_info
19418
0
            .borrow()
19419
0
            .hooks()
19420
0
            .cmd_set_performance_stream_marker_intel(
19421
0
                command_buffer,
19422
0
                unsafe { p_marker_info.as_ref() }.unwrap(),
19423
0
            );
19424
0
        match layer_result {
19425
0
            LayerResult::Handled(res) => match res {
19426
0
                Ok(()) => vk::Result::SUCCESS,
19427
0
                Err(e) => e,
19428
            },
19429
            LayerResult::Unhandled => unsafe {
19430
0
                (dispatch_table.cmd_set_performance_stream_marker_intel)(
19431
0
                    command_buffer,
19432
0
                    p_marker_info,
19433
0
                )
19434
            },
19435
        }
19436
0
    }
19437
0
    extern "system" fn cmd_set_performance_override_intel(
19438
0
        command_buffer: vk::CommandBuffer,
19439
0
        p_override_info: *const vk::PerformanceOverrideInfoINTEL,
19440
0
    ) -> vk::Result {
19441
0
        let global = Self::instance();
19442
0
        // vkCmdSetPerformanceOverrideINTEL
19443
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19444
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19445
0
        let layer_result = device_info
19446
0
            .customized_info
19447
0
            .borrow()
19448
0
            .hooks()
19449
0
            .cmd_set_performance_override_intel(
19450
0
                command_buffer,
19451
0
                unsafe { p_override_info.as_ref() }.unwrap(),
19452
0
            );
19453
0
        match layer_result {
19454
0
            LayerResult::Handled(res) => match res {
19455
0
                Ok(()) => vk::Result::SUCCESS,
19456
0
                Err(e) => e,
19457
            },
19458
            LayerResult::Unhandled => unsafe {
19459
0
                (dispatch_table.cmd_set_performance_override_intel)(command_buffer, p_override_info)
19460
            },
19461
        }
19462
0
    }
19463
0
    extern "system" fn acquire_performance_configuration_intel(
19464
0
        device: vk::Device,
19465
0
        p_acquire_info: *const vk::PerformanceConfigurationAcquireInfoINTEL,
19466
0
        p_configuration: *mut vk::PerformanceConfigurationINTEL,
19467
0
    ) -> vk::Result {
19468
0
        let global = Self::instance();
19469
0
        // vkAcquirePerformanceConfigurationINTEL
19470
0
        let device_info = global.get_device_info(device).unwrap();
19471
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19472
0
        let layer_result = device_info
19473
0
            .customized_info
19474
0
            .borrow()
19475
0
            .hooks()
19476
0
            .acquire_performance_configuration_intel(unsafe { p_acquire_info.as_ref() }.unwrap());
19477
0
        match layer_result {
19478
0
            LayerResult::Handled(res) => match res {
19479
0
                Ok(res) => {
19480
0
                    *unsafe { p_configuration.as_mut() }.unwrap() = res;
19481
0
                    vk::Result::SUCCESS
19482
                }
19483
0
                Err(e) => e,
19484
            },
19485
            LayerResult::Unhandled => unsafe {
19486
0
                (dispatch_table.acquire_performance_configuration_intel)(
19487
0
                    device,
19488
0
                    p_acquire_info,
19489
0
                    p_configuration,
19490
0
                )
19491
            },
19492
        }
19493
0
    }
19494
0
    extern "system" fn release_performance_configuration_intel(
19495
0
        device: vk::Device,
19496
0
        configuration: vk::PerformanceConfigurationINTEL,
19497
0
    ) -> vk::Result {
19498
0
        let global = Self::instance();
19499
0
        // vkReleasePerformanceConfigurationINTEL
19500
0
        let device_info = global.get_device_info(device).unwrap();
19501
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19502
0
        let layer_result = device_info
19503
0
            .customized_info
19504
0
            .borrow()
19505
0
            .hooks()
19506
0
            .release_performance_configuration_intel(configuration);
19507
0
        match layer_result {
19508
0
            LayerResult::Handled(res) => match res {
19509
0
                Ok(()) => vk::Result::SUCCESS,
19510
0
                Err(e) => e,
19511
            },
19512
            LayerResult::Unhandled => unsafe {
19513
0
                (dispatch_table.release_performance_configuration_intel)(device, configuration)
19514
            },
19515
        }
19516
0
    }
19517
0
    extern "system" fn queue_set_performance_configuration_intel(
19518
0
        queue: vk::Queue,
19519
0
        configuration: vk::PerformanceConfigurationINTEL,
19520
0
    ) -> vk::Result {
19521
0
        let global = Self::instance();
19522
0
        // vkQueueSetPerformanceConfigurationINTEL
19523
0
        let device_info = global.get_device_info(queue).unwrap();
19524
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19525
0
        let layer_result = device_info
19526
0
            .customized_info
19527
0
            .borrow()
19528
0
            .hooks()
19529
0
            .queue_set_performance_configuration_intel(queue, configuration);
19530
0
        match layer_result {
19531
0
            LayerResult::Handled(res) => match res {
19532
0
                Ok(()) => vk::Result::SUCCESS,
19533
0
                Err(e) => e,
19534
            },
19535
            LayerResult::Unhandled => unsafe {
19536
0
                (dispatch_table.queue_set_performance_configuration_intel)(queue, configuration)
19537
            },
19538
        }
19539
0
    }
19540
0
    extern "system" fn get_performance_parameter_intel(
19541
0
        device: vk::Device,
19542
0
        parameter: vk::PerformanceParameterTypeINTEL,
19543
0
        p_value: *mut vk::PerformanceValueINTEL,
19544
0
    ) -> vk::Result {
19545
0
        let global = Self::instance();
19546
0
        // vkGetPerformanceParameterINTEL
19547
0
        let device_info = global.get_device_info(device).unwrap();
19548
0
        let dispatch_table = &device_info.dispatch_table.intel_performance_query;
19549
0
        let layer_result = device_info
19550
0
            .customized_info
19551
0
            .borrow()
19552
0
            .hooks()
19553
0
            .get_performance_parameter_intel(
19554
0
                parameter,
19555
0
                unsafe { ptr_as_uninit_mut(p_value) }.unwrap(),
19556
0
            );
19557
0
        match layer_result {
19558
0
            LayerResult::Handled(res) => match res {
19559
0
                Ok(()) => vk::Result::SUCCESS,
19560
0
                Err(e) => e,
19561
            },
19562
            LayerResult::Unhandled => unsafe {
19563
0
                (dispatch_table.get_performance_parameter_intel)(device, parameter, p_value)
19564
            },
19565
        }
19566
0
    }
19567
0
    extern "system" fn set_local_dimming_amd(
19568
0
        device: vk::Device,
19569
0
        swap_chain: vk::SwapchainKHR,
19570
0
        local_dimming_enable: vk::Bool32,
19571
0
    ) {
19572
0
        let global = Self::instance();
19573
0
        // vkSetLocalDimmingAMD
19574
0
        let device_info = global.get_device_info(device).unwrap();
19575
0
        let dispatch_table = &device_info.dispatch_table.amd_display_native_hdr;
19576
0
        let layer_result = device_info
19577
0
            .customized_info
19578
0
            .borrow()
19579
0
            .hooks()
19580
0
            .set_local_dimming_amd(swap_chain, local_dimming_enable == vk::TRUE);
19581
0
        match layer_result {
19582
0
            LayerResult::Handled(res) => res,
19583
            LayerResult::Unhandled => unsafe {
19584
0
                (dispatch_table.set_local_dimming_amd)(device, swap_chain, local_dimming_enable)
19585
            },
19586
        }
19587
0
    }
19588
0
    extern "system" fn acquire_full_screen_exclusive_mode_ext(
19589
0
        device: vk::Device,
19590
0
        swapchain: vk::SwapchainKHR,
19591
0
    ) -> vk::Result {
19592
0
        let global = Self::instance();
19593
0
        // vkAcquireFullScreenExclusiveModeEXT
19594
0
        let device_info = global.get_device_info(device).unwrap();
19595
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19596
0
        let layer_result = device_info
19597
0
            .customized_info
19598
0
            .borrow()
19599
0
            .hooks()
19600
0
            .acquire_full_screen_exclusive_mode_ext(swapchain);
19601
0
        match layer_result {
19602
0
            LayerResult::Handled(res) => match res {
19603
0
                Ok(()) => vk::Result::SUCCESS,
19604
0
                Err(e) => e,
19605
            },
19606
            LayerResult::Unhandled => unsafe {
19607
0
                (dispatch_table.acquire_full_screen_exclusive_mode_ext)(device, swapchain)
19608
            },
19609
        }
19610
0
    }
19611
0
    extern "system" fn release_full_screen_exclusive_mode_ext(
19612
0
        device: vk::Device,
19613
0
        swapchain: vk::SwapchainKHR,
19614
0
    ) -> vk::Result {
19615
0
        let global = Self::instance();
19616
0
        // vkReleaseFullScreenExclusiveModeEXT
19617
0
        let device_info = global.get_device_info(device).unwrap();
19618
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19619
0
        let layer_result = device_info
19620
0
            .customized_info
19621
0
            .borrow()
19622
0
            .hooks()
19623
0
            .release_full_screen_exclusive_mode_ext(swapchain);
19624
0
        match layer_result {
19625
0
            LayerResult::Handled(res) => match res {
19626
0
                Ok(()) => vk::Result::SUCCESS,
19627
0
                Err(e) => e,
19628
            },
19629
            LayerResult::Unhandled => unsafe {
19630
0
                (dispatch_table.release_full_screen_exclusive_mode_ext)(device, swapchain)
19631
            },
19632
        }
19633
0
    }
19634
0
    extern "system" fn get_device_group_surface_present_modes2_ext(
19635
0
        device: vk::Device,
19636
0
        p_surface_info: *const vk::PhysicalDeviceSurfaceInfo2KHR,
19637
0
        p_modes: *mut vk::DeviceGroupPresentModeFlagsKHR,
19638
0
    ) -> vk::Result {
19639
0
        let global = Self::instance();
19640
0
        // vkGetDeviceGroupSurfacePresentModes2EXT
19641
0
        let device_info = global.get_device_info(device).unwrap();
19642
0
        let dispatch_table = &device_info.dispatch_table.ext_full_screen_exclusive;
19643
0
        let layer_result = device_info
19644
0
            .customized_info
19645
0
            .borrow()
19646
0
            .hooks()
19647
0
            .get_device_group_surface_present_modes2_ext(
19648
0
                unsafe { p_surface_info.as_ref() }.unwrap(),
19649
0
            );
19650
0
        match layer_result {
19651
0
            LayerResult::Handled(res) => match res {
19652
0
                Ok(res) => {
19653
0
                    *unsafe { p_modes.as_mut() }.unwrap() = res;
19654
0
                    vk::Result::SUCCESS
19655
                }
19656
0
                Err(e) => e,
19657
            },
19658
            LayerResult::Unhandled => unsafe {
19659
0
                (dispatch_table.get_device_group_surface_present_modes2_ext)(
19660
0
                    device,
19661
0
                    p_surface_info,
19662
0
                    p_modes,
19663
0
                )
19664
            },
19665
        }
19666
0
    }
19667
0
    extern "system" fn cmd_set_line_stipple_ext(
19668
0
        command_buffer: vk::CommandBuffer,
19669
0
        line_stipple_factor: u32,
19670
0
        line_stipple_pattern: u16,
19671
0
    ) {
19672
0
        let global = Self::instance();
19673
0
        // vkCmdSetLineStippleEXT
19674
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19675
0
        let dispatch_table = &device_info.dispatch_table.ext_line_rasterization;
19676
0
        let layer_result = device_info
19677
0
            .customized_info
19678
0
            .borrow()
19679
0
            .hooks()
19680
0
            .cmd_set_line_stipple_ext(command_buffer, line_stipple_factor, line_stipple_pattern);
19681
0
        match layer_result {
19682
0
            LayerResult::Handled(res) => res,
19683
            LayerResult::Unhandled => unsafe {
19684
0
                (dispatch_table.cmd_set_line_stipple_ext)(
19685
0
                    command_buffer,
19686
0
                    line_stipple_factor,
19687
0
                    line_stipple_pattern,
19688
0
                )
19689
            },
19690
        }
19691
0
    }
19692
0
    extern "system" fn release_swapchain_images_ext(
19693
0
        device: vk::Device,
19694
0
        p_release_info: *const vk::ReleaseSwapchainImagesInfoEXT,
19695
0
    ) -> vk::Result {
19696
0
        let global = Self::instance();
19697
0
        // vkReleaseSwapchainImagesEXT
19698
0
        let device_info = global.get_device_info(device).unwrap();
19699
0
        let dispatch_table = &device_info.dispatch_table.ext_swapchain_maintenance1;
19700
0
        let layer_result = device_info
19701
0
            .customized_info
19702
0
            .borrow()
19703
0
            .hooks()
19704
0
            .release_swapchain_images_ext(unsafe { p_release_info.as_ref() }.unwrap());
19705
0
        match layer_result {
19706
0
            LayerResult::Handled(res) => match res {
19707
0
                Ok(()) => vk::Result::SUCCESS,
19708
0
                Err(e) => e,
19709
            },
19710
            LayerResult::Unhandled => unsafe {
19711
0
                (dispatch_table.release_swapchain_images_ext)(device, p_release_info)
19712
            },
19713
        }
19714
0
    }
19715
0
    extern "system" fn get_generated_commands_memory_requirements_nv(
19716
0
        device: vk::Device,
19717
0
        p_info: *const vk::GeneratedCommandsMemoryRequirementsInfoNV,
19718
0
        p_memory_requirements: *mut vk::MemoryRequirements2,
19719
0
    ) {
19720
0
        let global = Self::instance();
19721
0
        // vkGetGeneratedCommandsMemoryRequirementsNV
19722
0
        let device_info = global.get_device_info(device).unwrap();
19723
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19724
0
        let layer_result = device_info
19725
0
            .customized_info
19726
0
            .borrow()
19727
0
            .hooks()
19728
0
            .get_generated_commands_memory_requirements_nv(
19729
0
                unsafe { p_info.as_ref() }.unwrap(),
19730
0
                unsafe { ptr_as_uninit_mut(p_memory_requirements) }.unwrap(),
19731
0
            );
19732
0
        match layer_result {
19733
0
            LayerResult::Handled(res) => res,
19734
            LayerResult::Unhandled => unsafe {
19735
0
                (dispatch_table.get_generated_commands_memory_requirements_nv)(
19736
0
                    device,
19737
0
                    p_info,
19738
0
                    p_memory_requirements,
19739
0
                )
19740
            },
19741
        }
19742
0
    }
19743
0
    extern "system" fn cmd_preprocess_generated_commands_nv(
19744
0
        command_buffer: vk::CommandBuffer,
19745
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
19746
0
    ) {
19747
0
        let global = Self::instance();
19748
0
        // vkCmdPreprocessGeneratedCommandsNV
19749
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19750
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19751
0
        let layer_result = device_info
19752
0
            .customized_info
19753
0
            .borrow()
19754
0
            .hooks()
19755
0
            .cmd_preprocess_generated_commands_nv(
19756
0
                command_buffer,
19757
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
19758
0
            );
19759
0
        match layer_result {
19760
0
            LayerResult::Handled(res) => res,
19761
            LayerResult::Unhandled => unsafe {
19762
0
                (dispatch_table.cmd_preprocess_generated_commands_nv)(
19763
0
                    command_buffer,
19764
0
                    p_generated_commands_info,
19765
0
                )
19766
            },
19767
        }
19768
0
    }
19769
0
    extern "system" fn cmd_execute_generated_commands_nv(
19770
0
        command_buffer: vk::CommandBuffer,
19771
0
        is_preprocessed: vk::Bool32,
19772
0
        p_generated_commands_info: *const vk::GeneratedCommandsInfoNV,
19773
0
    ) {
19774
0
        let global = Self::instance();
19775
0
        // vkCmdExecuteGeneratedCommandsNV
19776
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19777
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19778
0
        let layer_result = device_info
19779
0
            .customized_info
19780
0
            .borrow()
19781
0
            .hooks()
19782
0
            .cmd_execute_generated_commands_nv(
19783
0
                command_buffer,
19784
0
                is_preprocessed == vk::TRUE,
19785
0
                unsafe { p_generated_commands_info.as_ref() }.unwrap(),
19786
0
            );
19787
0
        match layer_result {
19788
0
            LayerResult::Handled(res) => res,
19789
            LayerResult::Unhandled => unsafe {
19790
0
                (dispatch_table.cmd_execute_generated_commands_nv)(
19791
0
                    command_buffer,
19792
0
                    is_preprocessed,
19793
0
                    p_generated_commands_info,
19794
0
                )
19795
            },
19796
        }
19797
0
    }
19798
0
    extern "system" fn cmd_bind_pipeline_shader_group_nv(
19799
0
        command_buffer: vk::CommandBuffer,
19800
0
        pipeline_bind_point: vk::PipelineBindPoint,
19801
0
        pipeline: vk::Pipeline,
19802
0
        group_index: u32,
19803
0
    ) {
19804
0
        let global = Self::instance();
19805
0
        // vkCmdBindPipelineShaderGroupNV
19806
0
        let device_info = global.get_device_info(command_buffer).unwrap();
19807
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19808
0
        let layer_result = device_info
19809
0
            .customized_info
19810
0
            .borrow()
19811
0
            .hooks()
19812
0
            .cmd_bind_pipeline_shader_group_nv(
19813
0
                command_buffer,
19814
0
                pipeline_bind_point,
19815
0
                pipeline,
19816
0
                group_index,
19817
0
            );
19818
0
        match layer_result {
19819
0
            LayerResult::Handled(res) => res,
19820
            LayerResult::Unhandled => unsafe {
19821
0
                (dispatch_table.cmd_bind_pipeline_shader_group_nv)(
19822
0
                    command_buffer,
19823
0
                    pipeline_bind_point,
19824
0
                    pipeline,
19825
0
                    group_index,
19826
0
                )
19827
            },
19828
        }
19829
0
    }
19830
0
    extern "system" fn create_indirect_commands_layout_nv(
19831
0
        device: vk::Device,
19832
0
        p_create_info: *const vk::IndirectCommandsLayoutCreateInfoNV,
19833
0
        p_allocator: *const vk::AllocationCallbacks,
19834
0
        p_indirect_commands_layout: *mut vk::IndirectCommandsLayoutNV,
19835
0
    ) -> vk::Result {
19836
0
        let global = Self::instance();
19837
0
        // vkCreateIndirectCommandsLayoutNV
19838
0
        let device_info = global.get_device_info(device).unwrap();
19839
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19840
0
        let layer_result = device_info
19841
0
            .customized_info
19842
0
            .borrow()
19843
0
            .hooks()
19844
0
            .create_indirect_commands_layout_nv(
19845
0
                unsafe { p_create_info.as_ref() }.unwrap(),
19846
0
                unsafe { p_allocator.as_ref() },
19847
0
            );
19848
0
        match layer_result {
19849
0
            LayerResult::Handled(res) => match res {
19850
0
                Ok(res) => {
19851
0
                    *unsafe { p_indirect_commands_layout.as_mut() }.unwrap() = res;
19852
0
                    vk::Result::SUCCESS
19853
                }
19854
0
                Err(e) => e,
19855
            },
19856
            LayerResult::Unhandled => unsafe {
19857
0
                (dispatch_table.create_indirect_commands_layout_nv)(
19858
0
                    device,
19859
0
                    p_create_info,
19860
0
                    p_allocator,
19861
0
                    p_indirect_commands_layout,
19862
0
                )
19863
            },
19864
        }
19865
0
    }
19866
0
    extern "system" fn destroy_indirect_commands_layout_nv(
19867
0
        device: vk::Device,
19868
0
        indirect_commands_layout: vk::IndirectCommandsLayoutNV,
19869
0
        p_allocator: *const vk::AllocationCallbacks,
19870
0
    ) {
19871
0
        let global = Self::instance();
19872
0
        // vkDestroyIndirectCommandsLayoutNV
19873
0
        let device_info = global.get_device_info(device).unwrap();
19874
0
        let dispatch_table = &device_info.dispatch_table.nv_device_generated_commands;
19875
0
        let layer_result = device_info
19876
0
            .customized_info
19877
0
            .borrow()
19878
0
            .hooks()
19879
0
            .destroy_indirect_commands_layout_nv(indirect_commands_layout, unsafe {
19880
0
                p_allocator.as_ref()
19881
0
            });
19882
0
        match layer_result {
19883
0
            LayerResult::Handled(res) => res,
19884
            LayerResult::Unhandled => unsafe {
19885
0
                (dispatch_table.destroy_indirect_commands_layout_nv)(
19886
0
                    device,
19887
0
                    indirect_commands_layout,
19888
0
                    p_allocator,
19889
0
                )
19890
            },
19891
        }
19892
0
    }
19893
0
    extern "system" fn export_metal_objects_ext(
19894
0
        device: vk::Device,
19895
0
        p_metal_objects_info: *mut vk::ExportMetalObjectsInfoEXT,
19896
0
    ) {
19897
0
        let global = Self::instance();
19898
0
        // vkExportMetalObjectsEXT
19899
0
        let device_info = global.get_device_info(device).unwrap();
19900
0
        let dispatch_table = &device_info.dispatch_table.ext_metal_objects;
19901
0
        let layer_result = device_info
19902
0
            .customized_info
19903
0
            .borrow()
19904
0
            .hooks()
19905
0
            .export_metal_objects_ext(unsafe { ptr_as_uninit_mut(p_metal_objects_info) }.unwrap());
19906
0
        match layer_result {
19907
0
            LayerResult::Handled(res) => res,
19908
            LayerResult::Unhandled => unsafe {
19909
0
                (dispatch_table.export_metal_objects_ext)(device, p_metal_objects_info)
19910
            },
19911
        }
19912
0
    }
19913
0
    extern "system" fn get_descriptor_set_layout_size_ext(
19914
0
        device: vk::Device,
19915
0
        layout: vk::DescriptorSetLayout,
19916
0
        p_layout_size_in_bytes: *mut vk::DeviceSize,
19917
0
    ) {
19918
0
        let global = Self::instance();
19919
0
        // vkGetDescriptorSetLayoutSizeEXT
19920
0
        let device_info = global.get_device_info(device).unwrap();
19921
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19922
0
        let layer_result = device_info
19923
0
            .customized_info
19924
0
            .borrow()
19925
0
            .hooks()
19926
0
            .get_descriptor_set_layout_size_ext(layout);
19927
0
        match layer_result {
19928
0
            LayerResult::Handled(res) => {
19929
0
                *unsafe { p_layout_size_in_bytes.as_mut() }.unwrap() = res;
19930
0
            }
19931
            LayerResult::Unhandled => unsafe {
19932
0
                (dispatch_table.get_descriptor_set_layout_size_ext)(
19933
0
                    device,
19934
0
                    layout,
19935
0
                    p_layout_size_in_bytes,
19936
0
                )
19937
            },
19938
        }
19939
0
    }
19940
0
    extern "system" fn get_descriptor_set_layout_binding_offset_ext(
19941
0
        device: vk::Device,
19942
0
        layout: vk::DescriptorSetLayout,
19943
0
        binding: u32,
19944
0
        p_offset: *mut vk::DeviceSize,
19945
0
    ) {
19946
0
        let global = Self::instance();
19947
0
        // vkGetDescriptorSetLayoutBindingOffsetEXT
19948
0
        let device_info = global.get_device_info(device).unwrap();
19949
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19950
0
        let layer_result = device_info
19951
0
            .customized_info
19952
0
            .borrow()
19953
0
            .hooks()
19954
0
            .get_descriptor_set_layout_binding_offset_ext(layout, binding);
19955
0
        match layer_result {
19956
0
            LayerResult::Handled(res) => {
19957
0
                *unsafe { p_offset.as_mut() }.unwrap() = res;
19958
0
            }
19959
            LayerResult::Unhandled => unsafe {
19960
0
                (dispatch_table.get_descriptor_set_layout_binding_offset_ext)(
19961
0
                    device, layout, binding, p_offset,
19962
0
                )
19963
            },
19964
        }
19965
0
    }
19966
0
    extern "system" fn get_descriptor_ext(
19967
0
        device: vk::Device,
19968
0
        p_descriptor_info: *const vk::DescriptorGetInfoEXT,
19969
0
        data_size: usize,
19970
0
        p_descriptor: *mut c_void,
19971
0
    ) {
19972
0
        let global = Self::instance();
19973
0
        // vkGetDescriptorEXT
19974
0
        let device_info = global.get_device_info(device).unwrap();
19975
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
19976
0
        let layer_result = device_info
19977
0
            .customized_info
19978
0
            .borrow()
19979
0
            .hooks()
19980
0
            .get_descriptor_ext(unsafe { p_descriptor_info.as_ref() }.unwrap(), unsafe {
19981
0
                uninit_slice_from_raw_parts_mut(p_descriptor as *mut u8, data_size)
19982
0
            });
19983
0
        match layer_result {
19984
0
            LayerResult::Handled(res) => res,
19985
            LayerResult::Unhandled => unsafe {
19986
0
                (dispatch_table.get_descriptor_ext)(
19987
0
                    device,
19988
0
                    p_descriptor_info,
19989
0
                    data_size,
19990
0
                    p_descriptor,
19991
0
                )
19992
            },
19993
        }
19994
0
    }
19995
0
    extern "system" fn cmd_bind_descriptor_buffers_ext(
19996
0
        command_buffer: vk::CommandBuffer,
19997
0
        buffer_count: u32,
19998
0
        p_binding_infos: *const vk::DescriptorBufferBindingInfoEXT,
19999
0
    ) {
20000
0
        let global = Self::instance();
20001
0
        // vkCmdBindDescriptorBuffersEXT
20002
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20003
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20004
0
        let layer_result = device_info
20005
0
            .customized_info
20006
0
            .borrow()
20007
0
            .hooks()
20008
0
            .cmd_bind_descriptor_buffers_ext(command_buffer, unsafe {
20009
0
                slice_from_raw_parts(p_binding_infos, buffer_count)
20010
0
            });
20011
0
        match layer_result {
20012
0
            LayerResult::Handled(res) => res,
20013
            LayerResult::Unhandled => unsafe {
20014
0
                (dispatch_table.cmd_bind_descriptor_buffers_ext)(
20015
0
                    command_buffer,
20016
0
                    buffer_count,
20017
0
                    p_binding_infos,
20018
0
                )
20019
            },
20020
        }
20021
0
    }
20022
0
    extern "system" fn cmd_set_descriptor_buffer_offsets_ext(
20023
0
        command_buffer: vk::CommandBuffer,
20024
0
        pipeline_bind_point: vk::PipelineBindPoint,
20025
0
        layout: vk::PipelineLayout,
20026
0
        first_set: u32,
20027
0
        set_count: u32,
20028
0
        p_buffer_indices: *const u32,
20029
0
        p_offsets: *const vk::DeviceSize,
20030
0
    ) {
20031
0
        let global = Self::instance();
20032
0
        // vkCmdSetDescriptorBufferOffsetsEXT
20033
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20034
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20035
0
        let layer_result = device_info
20036
0
            .customized_info
20037
0
            .borrow()
20038
0
            .hooks()
20039
0
            .cmd_set_descriptor_buffer_offsets_ext(
20040
0
                command_buffer,
20041
0
                pipeline_bind_point,
20042
0
                layout,
20043
0
                first_set,
20044
0
                unsafe { slice_from_raw_parts(p_buffer_indices, set_count) },
20045
0
                unsafe { slice_from_raw_parts(p_offsets, set_count) },
20046
0
            );
20047
0
        match layer_result {
20048
0
            LayerResult::Handled(res) => res,
20049
            LayerResult::Unhandled => unsafe {
20050
0
                (dispatch_table.cmd_set_descriptor_buffer_offsets_ext)(
20051
0
                    command_buffer,
20052
0
                    pipeline_bind_point,
20053
0
                    layout,
20054
0
                    first_set,
20055
0
                    set_count,
20056
0
                    p_buffer_indices,
20057
0
                    p_offsets,
20058
0
                )
20059
            },
20060
        }
20061
0
    }
20062
0
    extern "system" fn cmd_bind_descriptor_buffer_embedded_samplers_ext(
20063
0
        command_buffer: vk::CommandBuffer,
20064
0
        pipeline_bind_point: vk::PipelineBindPoint,
20065
0
        layout: vk::PipelineLayout,
20066
0
        set: u32,
20067
0
    ) {
20068
0
        let global = Self::instance();
20069
0
        // vkCmdBindDescriptorBufferEmbeddedSamplersEXT
20070
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20071
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20072
0
        let layer_result = device_info
20073
0
            .customized_info
20074
0
            .borrow()
20075
0
            .hooks()
20076
0
            .cmd_bind_descriptor_buffer_embedded_samplers_ext(
20077
0
                command_buffer,
20078
0
                pipeline_bind_point,
20079
0
                layout,
20080
0
                set,
20081
0
            );
20082
0
        match layer_result {
20083
0
            LayerResult::Handled(res) => res,
20084
            LayerResult::Unhandled => unsafe {
20085
0
                (dispatch_table.cmd_bind_descriptor_buffer_embedded_samplers_ext)(
20086
0
                    command_buffer,
20087
0
                    pipeline_bind_point,
20088
0
                    layout,
20089
0
                    set,
20090
0
                )
20091
            },
20092
        }
20093
0
    }
20094
0
    extern "system" fn get_buffer_opaque_capture_descriptor_data_ext(
20095
0
        device: vk::Device,
20096
0
        p_info: *const vk::BufferCaptureDescriptorDataInfoEXT,
20097
0
        p_data: *mut c_void,
20098
0
    ) -> vk::Result {
20099
0
        let global = Self::instance();
20100
0
        // vkGetBufferOpaqueCaptureDescriptorDataEXT
20101
0
        let device_info = global.get_device_info(device).unwrap();
20102
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20103
0
        let layer_result = device_info
20104
0
            .customized_info
20105
0
            .borrow()
20106
0
            .hooks()
20107
0
            .get_buffer_opaque_capture_descriptor_data_ext(
20108
0
                unsafe { p_info.as_ref() }.unwrap(),
20109
0
                p_data,
20110
0
            );
20111
0
        match layer_result {
20112
0
            LayerResult::Handled(res) => match res {
20113
0
                Ok(()) => vk::Result::SUCCESS,
20114
0
                Err(e) => e,
20115
            },
20116
            LayerResult::Unhandled => unsafe {
20117
0
                (dispatch_table.get_buffer_opaque_capture_descriptor_data_ext)(
20118
0
                    device, p_info, p_data,
20119
0
                )
20120
            },
20121
        }
20122
0
    }
20123
0
    extern "system" fn get_image_opaque_capture_descriptor_data_ext(
20124
0
        device: vk::Device,
20125
0
        p_info: *const vk::ImageCaptureDescriptorDataInfoEXT,
20126
0
        p_data: *mut c_void,
20127
0
    ) -> vk::Result {
20128
0
        let global = Self::instance();
20129
0
        // vkGetImageOpaqueCaptureDescriptorDataEXT
20130
0
        let device_info = global.get_device_info(device).unwrap();
20131
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20132
0
        let layer_result = device_info
20133
0
            .customized_info
20134
0
            .borrow()
20135
0
            .hooks()
20136
0
            .get_image_opaque_capture_descriptor_data_ext(
20137
0
                unsafe { p_info.as_ref() }.unwrap(),
20138
0
                p_data,
20139
0
            );
20140
0
        match layer_result {
20141
0
            LayerResult::Handled(res) => match res {
20142
0
                Ok(()) => vk::Result::SUCCESS,
20143
0
                Err(e) => e,
20144
            },
20145
            LayerResult::Unhandled => unsafe {
20146
0
                (dispatch_table.get_image_opaque_capture_descriptor_data_ext)(
20147
0
                    device, p_info, p_data,
20148
0
                )
20149
            },
20150
        }
20151
0
    }
20152
0
    extern "system" fn get_image_view_opaque_capture_descriptor_data_ext(
20153
0
        device: vk::Device,
20154
0
        p_info: *const vk::ImageViewCaptureDescriptorDataInfoEXT,
20155
0
        p_data: *mut c_void,
20156
0
    ) -> vk::Result {
20157
0
        let global = Self::instance();
20158
0
        // vkGetImageViewOpaqueCaptureDescriptorDataEXT
20159
0
        let device_info = global.get_device_info(device).unwrap();
20160
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20161
0
        let layer_result = device_info
20162
0
            .customized_info
20163
0
            .borrow()
20164
0
            .hooks()
20165
0
            .get_image_view_opaque_capture_descriptor_data_ext(
20166
0
                unsafe { p_info.as_ref() }.unwrap(),
20167
0
                p_data,
20168
0
            );
20169
0
        match layer_result {
20170
0
            LayerResult::Handled(res) => match res {
20171
0
                Ok(()) => vk::Result::SUCCESS,
20172
0
                Err(e) => e,
20173
            },
20174
            LayerResult::Unhandled => unsafe {
20175
0
                (dispatch_table.get_image_view_opaque_capture_descriptor_data_ext)(
20176
0
                    device, p_info, p_data,
20177
0
                )
20178
            },
20179
        }
20180
0
    }
20181
0
    extern "system" fn get_sampler_opaque_capture_descriptor_data_ext(
20182
0
        device: vk::Device,
20183
0
        p_info: *const vk::SamplerCaptureDescriptorDataInfoEXT,
20184
0
        p_data: *mut c_void,
20185
0
    ) -> vk::Result {
20186
0
        let global = Self::instance();
20187
0
        // vkGetSamplerOpaqueCaptureDescriptorDataEXT
20188
0
        let device_info = global.get_device_info(device).unwrap();
20189
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20190
0
        let layer_result = device_info
20191
0
            .customized_info
20192
0
            .borrow()
20193
0
            .hooks()
20194
0
            .get_sampler_opaque_capture_descriptor_data_ext(
20195
0
                unsafe { p_info.as_ref() }.unwrap(),
20196
0
                p_data,
20197
0
            );
20198
0
        match layer_result {
20199
0
            LayerResult::Handled(res) => match res {
20200
0
                Ok(()) => vk::Result::SUCCESS,
20201
0
                Err(e) => e,
20202
            },
20203
            LayerResult::Unhandled => unsafe {
20204
0
                (dispatch_table.get_sampler_opaque_capture_descriptor_data_ext)(
20205
0
                    device, p_info, p_data,
20206
0
                )
20207
            },
20208
        }
20209
0
    }
20210
0
    extern "system" fn get_acceleration_structure_opaque_capture_descriptor_data_ext(
20211
0
        device: vk::Device,
20212
0
        p_info: *const vk::AccelerationStructureCaptureDescriptorDataInfoEXT,
20213
0
        p_data: *mut c_void,
20214
0
    ) -> vk::Result {
20215
0
        let global = Self::instance();
20216
0
        // vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT
20217
0
        let device_info = global.get_device_info(device).unwrap();
20218
0
        let dispatch_table = &device_info.dispatch_table.ext_descriptor_buffer;
20219
0
        let layer_result = device_info
20220
0
            .customized_info
20221
0
            .borrow()
20222
0
            .hooks()
20223
0
            .get_acceleration_structure_opaque_capture_descriptor_data_ext(
20224
0
                unsafe { p_info.as_ref() }.unwrap(),
20225
0
                p_data,
20226
0
            );
20227
0
        match layer_result {
20228
0
            LayerResult::Handled(res) => match res {
20229
0
                Ok(()) => vk::Result::SUCCESS,
20230
0
                Err(e) => e,
20231
            },
20232
            LayerResult::Unhandled => unsafe {
20233
0
                (dispatch_table.get_acceleration_structure_opaque_capture_descriptor_data_ext)(
20234
0
                    device, p_info, p_data,
20235
0
                )
20236
            },
20237
        }
20238
0
    }
20239
0
    extern "system" fn cmd_set_fragment_shading_rate_enum_nv(
20240
0
        command_buffer: vk::CommandBuffer,
20241
0
        shading_rate: vk::FragmentShadingRateNV,
20242
0
        combiner_ops: *const [vk::FragmentShadingRateCombinerOpKHR; 2],
20243
0
    ) {
20244
0
        let global = Self::instance();
20245
0
        // vkCmdSetFragmentShadingRateEnumNV
20246
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20247
0
        let dispatch_table = &device_info.dispatch_table.nv_fragment_shading_rate_enums;
20248
0
        let layer_result = device_info
20249
0
            .customized_info
20250
0
            .borrow()
20251
0
            .hooks()
20252
0
            .cmd_set_fragment_shading_rate_enum_nv(
20253
0
                command_buffer,
20254
0
                shading_rate,
20255
0
                unsafe { combiner_ops.as_ref() }.unwrap(),
20256
0
            );
20257
0
        match layer_result {
20258
0
            LayerResult::Handled(res) => res,
20259
            LayerResult::Unhandled => unsafe {
20260
0
                (dispatch_table.cmd_set_fragment_shading_rate_enum_nv)(
20261
0
                    command_buffer,
20262
0
                    shading_rate,
20263
0
                    combiner_ops,
20264
0
                )
20265
            },
20266
        }
20267
0
    }
20268
0
    extern "system" fn get_image_subresource_layout2_ext(
20269
0
        device: vk::Device,
20270
0
        image: vk::Image,
20271
0
        p_subresource: *const vk::ImageSubresource2EXT,
20272
0
        p_layout: *mut vk::SubresourceLayout2EXT,
20273
0
    ) {
20274
0
        let global = Self::instance();
20275
0
        // vkGetImageSubresourceLayout2EXT
20276
0
        let device_info = global.get_device_info(device).unwrap();
20277
0
        let dispatch_table = &device_info.dispatch_table.ext_image_compression_control;
20278
0
        let layer_result = device_info
20279
0
            .customized_info
20280
0
            .borrow()
20281
0
            .hooks()
20282
0
            .get_image_subresource_layout2_ext(
20283
0
                image,
20284
0
                unsafe { p_subresource.as_ref() }.unwrap(),
20285
0
                unsafe { ptr_as_uninit_mut(p_layout) }.unwrap(),
20286
0
            );
20287
0
        match layer_result {
20288
0
            LayerResult::Handled(res) => res,
20289
            LayerResult::Unhandled => unsafe {
20290
0
                (dispatch_table.get_image_subresource_layout2_ext)(
20291
0
                    device,
20292
0
                    image,
20293
0
                    p_subresource,
20294
0
                    p_layout,
20295
0
                )
20296
            },
20297
        }
20298
0
    }
20299
0
    extern "system" fn cmd_set_vertex_input_ext(
20300
0
        command_buffer: vk::CommandBuffer,
20301
0
        vertex_binding_description_count: u32,
20302
0
        p_vertex_binding_descriptions: *const vk::VertexInputBindingDescription2EXT,
20303
0
        vertex_attribute_description_count: u32,
20304
0
        p_vertex_attribute_descriptions: *const vk::VertexInputAttributeDescription2EXT,
20305
0
    ) {
20306
0
        let global = Self::instance();
20307
0
        // vkCmdSetVertexInputEXT
20308
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20309
0
        let dispatch_table = &device_info.dispatch_table.ext_vertex_input_dynamic_state;
20310
0
        let layer_result = device_info
20311
0
            .customized_info
20312
0
            .borrow()
20313
0
            .hooks()
20314
0
            .cmd_set_vertex_input_ext(
20315
0
                command_buffer,
20316
0
                unsafe {
20317
0
                    slice_from_raw_parts(
20318
0
                        p_vertex_binding_descriptions,
20319
0
                        vertex_binding_description_count,
20320
0
                    )
20321
0
                },
20322
0
                unsafe {
20323
0
                    slice_from_raw_parts(
20324
0
                        p_vertex_attribute_descriptions,
20325
0
                        vertex_attribute_description_count,
20326
0
                    )
20327
0
                },
20328
0
            );
20329
0
        match layer_result {
20330
0
            LayerResult::Handled(res) => res,
20331
            LayerResult::Unhandled => unsafe {
20332
0
                (dispatch_table.cmd_set_vertex_input_ext)(
20333
0
                    command_buffer,
20334
0
                    vertex_binding_description_count,
20335
0
                    p_vertex_binding_descriptions,
20336
0
                    vertex_attribute_description_count,
20337
0
                    p_vertex_attribute_descriptions,
20338
0
                )
20339
            },
20340
        }
20341
0
    }
20342
0
    extern "system" fn get_memory_zircon_handle_fuchsia(
20343
0
        device: vk::Device,
20344
0
        p_get_zircon_handle_info: *const vk::MemoryGetZirconHandleInfoFUCHSIA,
20345
0
        p_zircon_handle: *mut vk::zx_handle_t,
20346
0
    ) -> vk::Result {
20347
0
        let global = Self::instance();
20348
0
        // vkGetMemoryZirconHandleFUCHSIA
20349
0
        let device_info = global.get_device_info(device).unwrap();
20350
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20351
0
        let layer_result = device_info
20352
0
            .customized_info
20353
0
            .borrow()
20354
0
            .hooks()
20355
0
            .get_memory_zircon_handle_fuchsia(
20356
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20357
0
            );
20358
0
        match layer_result {
20359
0
            LayerResult::Handled(res) => match res {
20360
0
                Ok(res) => {
20361
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20362
0
                    vk::Result::SUCCESS
20363
                }
20364
0
                Err(e) => e,
20365
            },
20366
            LayerResult::Unhandled => unsafe {
20367
0
                (dispatch_table.get_memory_zircon_handle_fuchsia)(
20368
0
                    device,
20369
0
                    p_get_zircon_handle_info,
20370
0
                    p_zircon_handle,
20371
0
                )
20372
            },
20373
        }
20374
0
    }
20375
0
    extern "system" fn get_memory_zircon_handle_properties_fuchsia(
20376
0
        device: vk::Device,
20377
0
        handle_type: vk::ExternalMemoryHandleTypeFlags,
20378
0
        zircon_handle: vk::zx_handle_t,
20379
0
        p_memory_zircon_handle_properties: *mut vk::MemoryZirconHandlePropertiesFUCHSIA,
20380
0
    ) -> vk::Result {
20381
0
        let global = Self::instance();
20382
0
        // vkGetMemoryZirconHandlePropertiesFUCHSIA
20383
0
        let device_info = global.get_device_info(device).unwrap();
20384
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_memory;
20385
0
        let layer_result = device_info
20386
0
            .customized_info
20387
0
            .borrow()
20388
0
            .hooks()
20389
0
            .get_memory_zircon_handle_properties_fuchsia(
20390
0
                handle_type,
20391
0
                zircon_handle,
20392
0
                unsafe { ptr_as_uninit_mut(p_memory_zircon_handle_properties) }.unwrap(),
20393
0
            );
20394
0
        match layer_result {
20395
0
            LayerResult::Handled(res) => match res {
20396
0
                Ok(()) => vk::Result::SUCCESS,
20397
0
                Err(e) => e,
20398
            },
20399
            LayerResult::Unhandled => unsafe {
20400
0
                (dispatch_table.get_memory_zircon_handle_properties_fuchsia)(
20401
0
                    device,
20402
0
                    handle_type,
20403
0
                    zircon_handle,
20404
0
                    p_memory_zircon_handle_properties,
20405
0
                )
20406
            },
20407
        }
20408
0
    }
20409
0
    extern "system" fn import_semaphore_zircon_handle_fuchsia(
20410
0
        device: vk::Device,
20411
0
        p_import_semaphore_zircon_handle_info: *const vk::ImportSemaphoreZirconHandleInfoFUCHSIA,
20412
0
    ) -> vk::Result {
20413
0
        let global = Self::instance();
20414
0
        // vkImportSemaphoreZirconHandleFUCHSIA
20415
0
        let device_info = global.get_device_info(device).unwrap();
20416
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20417
0
        let layer_result = device_info
20418
0
            .customized_info
20419
0
            .borrow()
20420
0
            .hooks()
20421
0
            .import_semaphore_zircon_handle_fuchsia(
20422
0
                unsafe { p_import_semaphore_zircon_handle_info.as_ref() }.unwrap(),
20423
0
            );
20424
0
        match layer_result {
20425
0
            LayerResult::Handled(res) => match res {
20426
0
                Ok(()) => vk::Result::SUCCESS,
20427
0
                Err(e) => e,
20428
            },
20429
            LayerResult::Unhandled => unsafe {
20430
0
                (dispatch_table.import_semaphore_zircon_handle_fuchsia)(
20431
0
                    device,
20432
0
                    p_import_semaphore_zircon_handle_info,
20433
0
                )
20434
            },
20435
        }
20436
0
    }
20437
0
    extern "system" fn get_semaphore_zircon_handle_fuchsia(
20438
0
        device: vk::Device,
20439
0
        p_get_zircon_handle_info: *const vk::SemaphoreGetZirconHandleInfoFUCHSIA,
20440
0
        p_zircon_handle: *mut vk::zx_handle_t,
20441
0
    ) -> vk::Result {
20442
0
        let global = Self::instance();
20443
0
        // vkGetSemaphoreZirconHandleFUCHSIA
20444
0
        let device_info = global.get_device_info(device).unwrap();
20445
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_external_semaphore;
20446
0
        let layer_result = device_info
20447
0
            .customized_info
20448
0
            .borrow()
20449
0
            .hooks()
20450
0
            .get_semaphore_zircon_handle_fuchsia(
20451
0
                unsafe { p_get_zircon_handle_info.as_ref() }.unwrap(),
20452
0
            );
20453
0
        match layer_result {
20454
0
            LayerResult::Handled(res) => match res {
20455
0
                Ok(res) => {
20456
0
                    *unsafe { p_zircon_handle.as_mut() }.unwrap() = res;
20457
0
                    vk::Result::SUCCESS
20458
                }
20459
0
                Err(e) => e,
20460
            },
20461
            LayerResult::Unhandled => unsafe {
20462
0
                (dispatch_table.get_semaphore_zircon_handle_fuchsia)(
20463
0
                    device,
20464
0
                    p_get_zircon_handle_info,
20465
0
                    p_zircon_handle,
20466
0
                )
20467
            },
20468
        }
20469
0
    }
20470
0
    extern "system" fn create_buffer_collection_fuchsia(
20471
0
        device: vk::Device,
20472
0
        p_create_info: *const vk::BufferCollectionCreateInfoFUCHSIA,
20473
0
        p_allocator: *const vk::AllocationCallbacks,
20474
0
        p_collection: *mut vk::BufferCollectionFUCHSIA,
20475
0
    ) -> vk::Result {
20476
0
        let global = Self::instance();
20477
0
        // vkCreateBufferCollectionFUCHSIA
20478
0
        let device_info = global.get_device_info(device).unwrap();
20479
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20480
0
        let layer_result = device_info
20481
0
            .customized_info
20482
0
            .borrow()
20483
0
            .hooks()
20484
0
            .create_buffer_collection_fuchsia(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
20485
0
                p_allocator.as_ref()
20486
0
            });
20487
0
        match layer_result {
20488
0
            LayerResult::Handled(res) => match res {
20489
0
                Ok(res) => {
20490
0
                    *unsafe { p_collection.as_mut() }.unwrap() = res;
20491
0
                    vk::Result::SUCCESS
20492
                }
20493
0
                Err(e) => e,
20494
            },
20495
            LayerResult::Unhandled => unsafe {
20496
0
                (dispatch_table.create_buffer_collection_fuchsia)(
20497
0
                    device,
20498
0
                    p_create_info,
20499
0
                    p_allocator,
20500
0
                    p_collection,
20501
0
                )
20502
            },
20503
        }
20504
0
    }
20505
0
    extern "system" fn set_buffer_collection_image_constraints_fuchsia(
20506
0
        device: vk::Device,
20507
0
        collection: vk::BufferCollectionFUCHSIA,
20508
0
        p_image_constraints_info: *const vk::ImageConstraintsInfoFUCHSIA,
20509
0
    ) -> vk::Result {
20510
0
        let global = Self::instance();
20511
0
        // vkSetBufferCollectionImageConstraintsFUCHSIA
20512
0
        let device_info = global.get_device_info(device).unwrap();
20513
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20514
0
        let layer_result = device_info
20515
0
            .customized_info
20516
0
            .borrow()
20517
0
            .hooks()
20518
0
            .set_buffer_collection_image_constraints_fuchsia(
20519
0
                collection,
20520
0
                unsafe { p_image_constraints_info.as_ref() }.unwrap(),
20521
0
            );
20522
0
        match layer_result {
20523
0
            LayerResult::Handled(res) => match res {
20524
0
                Ok(()) => vk::Result::SUCCESS,
20525
0
                Err(e) => e,
20526
            },
20527
            LayerResult::Unhandled => unsafe {
20528
0
                (dispatch_table.set_buffer_collection_image_constraints_fuchsia)(
20529
0
                    device,
20530
0
                    collection,
20531
0
                    p_image_constraints_info,
20532
0
                )
20533
            },
20534
        }
20535
0
    }
20536
0
    extern "system" fn set_buffer_collection_buffer_constraints_fuchsia(
20537
0
        device: vk::Device,
20538
0
        collection: vk::BufferCollectionFUCHSIA,
20539
0
        p_buffer_constraints_info: *const vk::BufferConstraintsInfoFUCHSIA,
20540
0
    ) -> vk::Result {
20541
0
        let global = Self::instance();
20542
0
        // vkSetBufferCollectionBufferConstraintsFUCHSIA
20543
0
        let device_info = global.get_device_info(device).unwrap();
20544
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20545
0
        let layer_result = device_info
20546
0
            .customized_info
20547
0
            .borrow()
20548
0
            .hooks()
20549
0
            .set_buffer_collection_buffer_constraints_fuchsia(
20550
0
                collection,
20551
0
                unsafe { p_buffer_constraints_info.as_ref() }.unwrap(),
20552
0
            );
20553
0
        match layer_result {
20554
0
            LayerResult::Handled(res) => match res {
20555
0
                Ok(()) => vk::Result::SUCCESS,
20556
0
                Err(e) => e,
20557
            },
20558
            LayerResult::Unhandled => unsafe {
20559
0
                (dispatch_table.set_buffer_collection_buffer_constraints_fuchsia)(
20560
0
                    device,
20561
0
                    collection,
20562
0
                    p_buffer_constraints_info,
20563
0
                )
20564
            },
20565
        }
20566
0
    }
20567
0
    extern "system" fn destroy_buffer_collection_fuchsia(
20568
0
        device: vk::Device,
20569
0
        collection: vk::BufferCollectionFUCHSIA,
20570
0
        p_allocator: *const vk::AllocationCallbacks,
20571
0
    ) {
20572
0
        let global = Self::instance();
20573
0
        // vkDestroyBufferCollectionFUCHSIA
20574
0
        let device_info = global.get_device_info(device).unwrap();
20575
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20576
0
        let layer_result = device_info
20577
0
            .customized_info
20578
0
            .borrow()
20579
0
            .hooks()
20580
0
            .destroy_buffer_collection_fuchsia(collection, unsafe { p_allocator.as_ref() });
20581
0
        match layer_result {
20582
0
            LayerResult::Handled(res) => res,
20583
            LayerResult::Unhandled => unsafe {
20584
0
                (dispatch_table.destroy_buffer_collection_fuchsia)(device, collection, p_allocator)
20585
            },
20586
        }
20587
0
    }
20588
0
    extern "system" fn get_buffer_collection_properties_fuchsia(
20589
0
        device: vk::Device,
20590
0
        collection: vk::BufferCollectionFUCHSIA,
20591
0
        p_properties: *mut vk::BufferCollectionPropertiesFUCHSIA,
20592
0
    ) -> vk::Result {
20593
0
        let global = Self::instance();
20594
0
        // vkGetBufferCollectionPropertiesFUCHSIA
20595
0
        let device_info = global.get_device_info(device).unwrap();
20596
0
        let dispatch_table = &device_info.dispatch_table.fuchsia_buffer_collection;
20597
0
        let layer_result = device_info
20598
0
            .customized_info
20599
0
            .borrow()
20600
0
            .hooks()
20601
0
            .get_buffer_collection_properties_fuchsia(
20602
0
                collection,
20603
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
20604
0
            );
20605
0
        match layer_result {
20606
0
            LayerResult::Handled(res) => match res {
20607
0
                Ok(()) => vk::Result::SUCCESS,
20608
0
                Err(e) => e,
20609
            },
20610
            LayerResult::Unhandled => unsafe {
20611
0
                (dispatch_table.get_buffer_collection_properties_fuchsia)(
20612
0
                    device,
20613
0
                    collection,
20614
0
                    p_properties,
20615
0
                )
20616
            },
20617
        }
20618
0
    }
20619
0
    extern "system" fn get_device_subpass_shading_max_workgroup_size_huawei(
20620
0
        device: vk::Device,
20621
0
        renderpass: vk::RenderPass,
20622
0
        p_max_workgroup_size: *mut vk::Extent2D,
20623
0
    ) -> vk::Result {
20624
0
        let global = Self::instance();
20625
0
        // vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI
20626
0
        let device_info = global.get_device_info(device).unwrap();
20627
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20628
0
        let layer_result = device_info
20629
0
            .customized_info
20630
0
            .borrow()
20631
0
            .hooks()
20632
0
            .get_device_subpass_shading_max_workgroup_size_huawei(
20633
0
                renderpass,
20634
0
                unsafe { ptr_as_uninit_mut(p_max_workgroup_size) }.unwrap(),
20635
0
            );
20636
0
        match layer_result {
20637
0
            LayerResult::Handled(res) => match res {
20638
0
                Ok(()) => vk::Result::SUCCESS,
20639
0
                Err(e) => e,
20640
            },
20641
            LayerResult::Unhandled => unsafe {
20642
0
                (dispatch_table.get_device_subpass_shading_max_workgroup_size_huawei)(
20643
0
                    device,
20644
0
                    renderpass,
20645
0
                    p_max_workgroup_size,
20646
0
                )
20647
            },
20648
        }
20649
0
    }
20650
0
    extern "system" fn cmd_subpass_shading_huawei(command_buffer: vk::CommandBuffer) {
20651
0
        let global = Self::instance();
20652
0
        // vkCmdSubpassShadingHUAWEI
20653
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20654
0
        let dispatch_table = &device_info.dispatch_table.huawei_subpass_shading;
20655
0
        let layer_result = device_info
20656
0
            .customized_info
20657
0
            .borrow()
20658
0
            .hooks()
20659
0
            .cmd_subpass_shading_huawei(command_buffer);
20660
0
        match layer_result {
20661
0
            LayerResult::Handled(res) => res,
20662
            LayerResult::Unhandled => unsafe {
20663
0
                (dispatch_table.cmd_subpass_shading_huawei)(command_buffer)
20664
            },
20665
        }
20666
0
    }
20667
0
    extern "system" fn cmd_bind_invocation_mask_huawei(
20668
0
        command_buffer: vk::CommandBuffer,
20669
0
        image_view: vk::ImageView,
20670
0
        image_layout: vk::ImageLayout,
20671
0
    ) {
20672
0
        let global = Self::instance();
20673
0
        // vkCmdBindInvocationMaskHUAWEI
20674
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20675
0
        let dispatch_table = &device_info.dispatch_table.huawei_invocation_mask;
20676
0
        let layer_result = device_info
20677
0
            .customized_info
20678
0
            .borrow()
20679
0
            .hooks()
20680
0
            .cmd_bind_invocation_mask_huawei(command_buffer, image_view, image_layout);
20681
0
        match layer_result {
20682
0
            LayerResult::Handled(res) => res,
20683
            LayerResult::Unhandled => unsafe {
20684
0
                (dispatch_table.cmd_bind_invocation_mask_huawei)(
20685
0
                    command_buffer,
20686
0
                    image_view,
20687
0
                    image_layout,
20688
0
                )
20689
            },
20690
        }
20691
0
    }
20692
0
    extern "system" fn get_memory_remote_address_nv(
20693
0
        device: vk::Device,
20694
0
        p_memory_get_remote_address_info: *const vk::MemoryGetRemoteAddressInfoNV,
20695
0
        p_address: *mut vk::RemoteAddressNV,
20696
0
    ) -> vk::Result {
20697
0
        let global = Self::instance();
20698
0
        // vkGetMemoryRemoteAddressNV
20699
0
        let device_info = global.get_device_info(device).unwrap();
20700
0
        let dispatch_table = &device_info.dispatch_table.nv_external_memory_rdma;
20701
0
        let layer_result = device_info
20702
0
            .customized_info
20703
0
            .borrow()
20704
0
            .hooks()
20705
0
            .get_memory_remote_address_nv(
20706
0
                unsafe { p_memory_get_remote_address_info.as_ref() }.unwrap(),
20707
0
            );
20708
0
        match layer_result {
20709
0
            LayerResult::Handled(res) => match res {
20710
0
                Ok(res) => {
20711
0
                    *unsafe { p_address.as_mut() }.unwrap() = res;
20712
0
                    vk::Result::SUCCESS
20713
                }
20714
0
                Err(e) => e,
20715
            },
20716
            LayerResult::Unhandled => unsafe {
20717
0
                (dispatch_table.get_memory_remote_address_nv)(
20718
0
                    device,
20719
0
                    p_memory_get_remote_address_info,
20720
0
                    p_address,
20721
0
                )
20722
            },
20723
        }
20724
0
    }
20725
0
    extern "system" fn get_pipeline_properties_ext(
20726
0
        device: vk::Device,
20727
0
        p_pipeline_info: *const vk::PipelineInfoEXT,
20728
0
        p_pipeline_properties: *mut vk::BaseOutStructure,
20729
0
    ) -> vk::Result {
20730
0
        let global = Self::instance();
20731
0
        // vkGetPipelinePropertiesEXT
20732
0
        let device_info = global.get_device_info(device).unwrap();
20733
0
        let dispatch_table = &device_info.dispatch_table.ext_pipeline_properties;
20734
0
        let layer_result = device_info
20735
0
            .customized_info
20736
0
            .borrow()
20737
0
            .hooks()
20738
0
            .get_pipeline_properties_ext(
20739
0
                unsafe { p_pipeline_info.as_ref() }.unwrap(),
20740
0
                unsafe { ptr_as_uninit_mut(p_pipeline_properties) }.unwrap(),
20741
0
            );
20742
0
        match layer_result {
20743
0
            LayerResult::Handled(res) => match res {
20744
0
                Ok(()) => vk::Result::SUCCESS,
20745
0
                Err(e) => e,
20746
            },
20747
            LayerResult::Unhandled => unsafe {
20748
0
                (dispatch_table.get_pipeline_properties_ext)(
20749
0
                    device,
20750
0
                    p_pipeline_info,
20751
0
                    p_pipeline_properties,
20752
0
                )
20753
            },
20754
        }
20755
0
    }
20756
0
    extern "system" fn cmd_set_patch_control_points_ext(
20757
0
        command_buffer: vk::CommandBuffer,
20758
0
        patch_control_points: u32,
20759
0
    ) {
20760
0
        let global = Self::instance();
20761
0
        // vkCmdSetPatchControlPointsEXT
20762
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20763
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
20764
0
        let layer_result = device_info
20765
0
            .customized_info
20766
0
            .borrow()
20767
0
            .hooks()
20768
0
            .cmd_set_patch_control_points_ext(command_buffer, patch_control_points);
20769
0
        match layer_result {
20770
0
            LayerResult::Handled(res) => res,
20771
            LayerResult::Unhandled => unsafe {
20772
0
                (dispatch_table.cmd_set_patch_control_points_ext)(
20773
0
                    command_buffer,
20774
0
                    patch_control_points,
20775
0
                )
20776
            },
20777
        }
20778
0
    }
20779
0
    extern "system" fn cmd_set_logic_op_ext(
20780
0
        command_buffer: vk::CommandBuffer,
20781
0
        logic_op: vk::LogicOp,
20782
0
    ) {
20783
0
        let global = Self::instance();
20784
0
        // vkCmdSetLogicOpEXT
20785
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20786
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state2;
20787
0
        let layer_result = device_info
20788
0
            .customized_info
20789
0
            .borrow()
20790
0
            .hooks()
20791
0
            .cmd_set_logic_op_ext(command_buffer, logic_op);
20792
0
        match layer_result {
20793
0
            LayerResult::Handled(res) => res,
20794
            LayerResult::Unhandled => unsafe {
20795
0
                (dispatch_table.cmd_set_logic_op_ext)(command_buffer, logic_op)
20796
            },
20797
        }
20798
0
    }
20799
0
    extern "system" fn cmd_set_color_write_enable_ext(
20800
0
        command_buffer: vk::CommandBuffer,
20801
0
        attachment_count: u32,
20802
0
        p_color_write_enables: *const vk::Bool32,
20803
0
    ) {
20804
0
        let global = Self::instance();
20805
0
        // vkCmdSetColorWriteEnableEXT
20806
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20807
0
        let dispatch_table = &device_info.dispatch_table.ext_color_write_enable;
20808
0
        let layer_result = device_info
20809
0
            .customized_info
20810
0
            .borrow()
20811
0
            .hooks()
20812
0
            .cmd_set_color_write_enable_ext(command_buffer, unsafe {
20813
0
                bool_iterator_from_raw_parts(p_color_write_enables, attachment_count)
20814
0
            });
20815
0
        match layer_result {
20816
0
            LayerResult::Handled(res) => res,
20817
            LayerResult::Unhandled => unsafe {
20818
0
                (dispatch_table.cmd_set_color_write_enable_ext)(
20819
0
                    command_buffer,
20820
0
                    attachment_count,
20821
0
                    p_color_write_enables,
20822
0
                )
20823
            },
20824
        }
20825
0
    }
20826
0
    extern "system" fn cmd_draw_multi_ext(
20827
0
        command_buffer: vk::CommandBuffer,
20828
0
        draw_count: u32,
20829
0
        p_vertex_info: *const vk::MultiDrawInfoEXT,
20830
0
        instance_count: u32,
20831
0
        first_instance: u32,
20832
0
        stride: u32,
20833
0
    ) {
20834
0
        let global = Self::instance();
20835
0
        // vkCmdDrawMultiEXT
20836
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20837
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
20838
0
        let layer_result = device_info
20839
0
            .customized_info
20840
0
            .borrow()
20841
0
            .hooks()
20842
0
            .cmd_draw_multi_ext(
20843
0
                command_buffer,
20844
0
                unsafe { slice_from_raw_parts(p_vertex_info, draw_count) },
20845
0
                instance_count,
20846
0
                first_instance,
20847
0
                stride,
20848
0
            );
20849
0
        match layer_result {
20850
0
            LayerResult::Handled(res) => res,
20851
            LayerResult::Unhandled => unsafe {
20852
0
                (dispatch_table.cmd_draw_multi_ext)(
20853
0
                    command_buffer,
20854
0
                    draw_count,
20855
0
                    p_vertex_info,
20856
0
                    instance_count,
20857
0
                    first_instance,
20858
0
                    stride,
20859
0
                )
20860
            },
20861
        }
20862
0
    }
20863
0
    extern "system" fn cmd_draw_multi_indexed_ext(
20864
0
        command_buffer: vk::CommandBuffer,
20865
0
        draw_count: u32,
20866
0
        p_index_info: *const vk::MultiDrawIndexedInfoEXT,
20867
0
        instance_count: u32,
20868
0
        first_instance: u32,
20869
0
        stride: u32,
20870
0
        p_vertex_offset: *const i32,
20871
0
    ) {
20872
0
        let global = Self::instance();
20873
0
        // vkCmdDrawMultiIndexedEXT
20874
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20875
0
        let dispatch_table = &device_info.dispatch_table.ext_multi_draw;
20876
0
        let layer_result = device_info
20877
0
            .customized_info
20878
0
            .borrow()
20879
0
            .hooks()
20880
0
            .cmd_draw_multi_indexed_ext(
20881
0
                command_buffer,
20882
0
                unsafe { slice_from_raw_parts(p_index_info, draw_count) },
20883
0
                instance_count,
20884
0
                first_instance,
20885
0
                stride,
20886
0
                unsafe { p_vertex_offset.as_ref() },
20887
0
            );
20888
0
        match layer_result {
20889
0
            LayerResult::Handled(res) => res,
20890
            LayerResult::Unhandled => unsafe {
20891
0
                (dispatch_table.cmd_draw_multi_indexed_ext)(
20892
0
                    command_buffer,
20893
0
                    draw_count,
20894
0
                    p_index_info,
20895
0
                    instance_count,
20896
0
                    first_instance,
20897
0
                    stride,
20898
0
                    p_vertex_offset,
20899
0
                )
20900
            },
20901
        }
20902
0
    }
20903
0
    extern "system" fn create_micromap_ext(
20904
0
        device: vk::Device,
20905
0
        p_create_info: *const vk::MicromapCreateInfoEXT,
20906
0
        p_allocator: *const vk::AllocationCallbacks,
20907
0
        p_micromap: *mut vk::MicromapEXT,
20908
0
    ) -> vk::Result {
20909
0
        let global = Self::instance();
20910
0
        // vkCreateMicromapEXT
20911
0
        let device_info = global.get_device_info(device).unwrap();
20912
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20913
0
        let layer_result = device_info
20914
0
            .customized_info
20915
0
            .borrow()
20916
0
            .hooks()
20917
0
            .create_micromap_ext(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
20918
0
                p_allocator.as_ref()
20919
0
            });
20920
0
        match layer_result {
20921
0
            LayerResult::Handled(res) => match res {
20922
0
                Ok(res) => {
20923
0
                    *unsafe { p_micromap.as_mut() }.unwrap() = res;
20924
0
                    vk::Result::SUCCESS
20925
                }
20926
0
                Err(e) => e,
20927
            },
20928
            LayerResult::Unhandled => unsafe {
20929
0
                (dispatch_table.create_micromap_ext)(device, p_create_info, p_allocator, p_micromap)
20930
            },
20931
        }
20932
0
    }
20933
0
    extern "system" fn destroy_micromap_ext(
20934
0
        device: vk::Device,
20935
0
        micromap: vk::MicromapEXT,
20936
0
        p_allocator: *const vk::AllocationCallbacks,
20937
0
    ) {
20938
0
        let global = Self::instance();
20939
0
        // vkDestroyMicromapEXT
20940
0
        let device_info = global.get_device_info(device).unwrap();
20941
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20942
0
        let layer_result = device_info
20943
0
            .customized_info
20944
0
            .borrow()
20945
0
            .hooks()
20946
0
            .destroy_micromap_ext(micromap, unsafe { p_allocator.as_ref() });
20947
0
        match layer_result {
20948
0
            LayerResult::Handled(res) => res,
20949
            LayerResult::Unhandled => unsafe {
20950
0
                (dispatch_table.destroy_micromap_ext)(device, micromap, p_allocator)
20951
            },
20952
        }
20953
0
    }
20954
0
    extern "system" fn cmd_build_micromaps_ext(
20955
0
        command_buffer: vk::CommandBuffer,
20956
0
        info_count: u32,
20957
0
        p_infos: *const vk::MicromapBuildInfoEXT,
20958
0
    ) {
20959
0
        let global = Self::instance();
20960
0
        // vkCmdBuildMicromapsEXT
20961
0
        let device_info = global.get_device_info(command_buffer).unwrap();
20962
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20963
0
        let layer_result = device_info
20964
0
            .customized_info
20965
0
            .borrow()
20966
0
            .hooks()
20967
0
            .cmd_build_micromaps_ext(command_buffer, unsafe {
20968
0
                slice_from_raw_parts(p_infos, info_count)
20969
0
            });
20970
0
        match layer_result {
20971
0
            LayerResult::Handled(res) => res,
20972
            LayerResult::Unhandled => unsafe {
20973
0
                (dispatch_table.cmd_build_micromaps_ext)(command_buffer, info_count, p_infos)
20974
            },
20975
        }
20976
0
    }
20977
0
    extern "system" fn build_micromaps_ext(
20978
0
        device: vk::Device,
20979
0
        deferred_operation: vk::DeferredOperationKHR,
20980
0
        info_count: u32,
20981
0
        p_infos: *const vk::MicromapBuildInfoEXT,
20982
0
    ) -> vk::Result {
20983
0
        let global = Self::instance();
20984
0
        // vkBuildMicromapsEXT
20985
0
        let device_info = global.get_device_info(device).unwrap();
20986
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
20987
0
        let layer_result = device_info
20988
0
            .customized_info
20989
0
            .borrow()
20990
0
            .hooks()
20991
0
            .build_micromaps_ext(deferred_operation, unsafe {
20992
0
                slice_from_raw_parts(p_infos, info_count)
20993
0
            });
20994
0
        match layer_result {
20995
0
            LayerResult::Handled(res) => match res {
20996
0
                Ok(()) => vk::Result::SUCCESS,
20997
0
                Err(e) => e,
20998
            },
20999
            LayerResult::Unhandled => unsafe {
21000
0
                (dispatch_table.build_micromaps_ext)(
21001
0
                    device,
21002
0
                    deferred_operation,
21003
0
                    info_count,
21004
0
                    p_infos,
21005
0
                )
21006
            },
21007
        }
21008
0
    }
21009
0
    extern "system" fn copy_micromap_ext(
21010
0
        device: vk::Device,
21011
0
        deferred_operation: vk::DeferredOperationKHR,
21012
0
        p_info: *const vk::CopyMicromapInfoEXT,
21013
0
    ) -> vk::Result {
21014
0
        let global = Self::instance();
21015
0
        // vkCopyMicromapEXT
21016
0
        let device_info = global.get_device_info(device).unwrap();
21017
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21018
0
        let layer_result = device_info
21019
0
            .customized_info
21020
0
            .borrow()
21021
0
            .hooks()
21022
0
            .copy_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21023
0
        match layer_result {
21024
0
            LayerResult::Handled(res) => match res {
21025
0
                Ok(()) => vk::Result::SUCCESS,
21026
0
                Err(e) => e,
21027
            },
21028
            LayerResult::Unhandled => unsafe {
21029
0
                (dispatch_table.copy_micromap_ext)(device, deferred_operation, p_info)
21030
            },
21031
        }
21032
0
    }
21033
0
    extern "system" fn copy_micromap_to_memory_ext(
21034
0
        device: vk::Device,
21035
0
        deferred_operation: vk::DeferredOperationKHR,
21036
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21037
0
    ) -> vk::Result {
21038
0
        let global = Self::instance();
21039
0
        // vkCopyMicromapToMemoryEXT
21040
0
        let device_info = global.get_device_info(device).unwrap();
21041
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21042
0
        let layer_result = device_info
21043
0
            .customized_info
21044
0
            .borrow()
21045
0
            .hooks()
21046
0
            .copy_micromap_to_memory_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21047
0
        match layer_result {
21048
0
            LayerResult::Handled(res) => match res {
21049
0
                Ok(()) => vk::Result::SUCCESS,
21050
0
                Err(e) => e,
21051
            },
21052
            LayerResult::Unhandled => unsafe {
21053
0
                (dispatch_table.copy_micromap_to_memory_ext)(device, deferred_operation, p_info)
21054
            },
21055
        }
21056
0
    }
21057
0
    extern "system" fn copy_memory_to_micromap_ext(
21058
0
        device: vk::Device,
21059
0
        deferred_operation: vk::DeferredOperationKHR,
21060
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21061
0
    ) -> vk::Result {
21062
0
        let global = Self::instance();
21063
0
        // vkCopyMemoryToMicromapEXT
21064
0
        let device_info = global.get_device_info(device).unwrap();
21065
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21066
0
        let layer_result = device_info
21067
0
            .customized_info
21068
0
            .borrow()
21069
0
            .hooks()
21070
0
            .copy_memory_to_micromap_ext(deferred_operation, unsafe { p_info.as_ref() }.unwrap());
21071
0
        match layer_result {
21072
0
            LayerResult::Handled(res) => match res {
21073
0
                Ok(()) => vk::Result::SUCCESS,
21074
0
                Err(e) => e,
21075
            },
21076
            LayerResult::Unhandled => unsafe {
21077
0
                (dispatch_table.copy_memory_to_micromap_ext)(device, deferred_operation, p_info)
21078
            },
21079
        }
21080
0
    }
21081
0
    extern "system" fn write_micromaps_properties_ext(
21082
0
        device: vk::Device,
21083
0
        micromap_count: u32,
21084
0
        p_micromaps: *const vk::MicromapEXT,
21085
0
        query_type: vk::QueryType,
21086
0
        data_size: usize,
21087
0
        p_data: *mut c_void,
21088
0
        stride: usize,
21089
0
    ) -> vk::Result {
21090
0
        let global = Self::instance();
21091
0
        // vkWriteMicromapsPropertiesEXT
21092
0
        let device_info = global.get_device_info(device).unwrap();
21093
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21094
0
        let layer_result = device_info
21095
0
            .customized_info
21096
0
            .borrow()
21097
0
            .hooks()
21098
0
            .write_micromaps_properties_ext(
21099
0
                unsafe { slice_from_raw_parts(p_micromaps, micromap_count) },
21100
0
                query_type,
21101
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
21102
0
                stride,
21103
0
            );
21104
0
        match layer_result {
21105
0
            LayerResult::Handled(res) => match res {
21106
0
                Ok(()) => vk::Result::SUCCESS,
21107
0
                Err(e) => e,
21108
            },
21109
            LayerResult::Unhandled => unsafe {
21110
0
                (dispatch_table.write_micromaps_properties_ext)(
21111
0
                    device,
21112
0
                    micromap_count,
21113
0
                    p_micromaps,
21114
0
                    query_type,
21115
0
                    data_size,
21116
0
                    p_data,
21117
0
                    stride,
21118
0
                )
21119
            },
21120
        }
21121
0
    }
21122
0
    extern "system" fn cmd_copy_micromap_ext(
21123
0
        command_buffer: vk::CommandBuffer,
21124
0
        p_info: *const vk::CopyMicromapInfoEXT,
21125
0
    ) {
21126
0
        let global = Self::instance();
21127
0
        // vkCmdCopyMicromapEXT
21128
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21129
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21130
0
        let layer_result = device_info
21131
0
            .customized_info
21132
0
            .borrow()
21133
0
            .hooks()
21134
0
            .cmd_copy_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21135
0
        match layer_result {
21136
0
            LayerResult::Handled(res) => res,
21137
            LayerResult::Unhandled => unsafe {
21138
0
                (dispatch_table.cmd_copy_micromap_ext)(command_buffer, p_info)
21139
            },
21140
        }
21141
0
    }
21142
0
    extern "system" fn cmd_copy_micromap_to_memory_ext(
21143
0
        command_buffer: vk::CommandBuffer,
21144
0
        p_info: *const vk::CopyMicromapToMemoryInfoEXT,
21145
0
    ) {
21146
0
        let global = Self::instance();
21147
0
        // vkCmdCopyMicromapToMemoryEXT
21148
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21149
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21150
0
        let layer_result = device_info
21151
0
            .customized_info
21152
0
            .borrow()
21153
0
            .hooks()
21154
0
            .cmd_copy_micromap_to_memory_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21155
0
        match layer_result {
21156
0
            LayerResult::Handled(res) => res,
21157
            LayerResult::Unhandled => unsafe {
21158
0
                (dispatch_table.cmd_copy_micromap_to_memory_ext)(command_buffer, p_info)
21159
            },
21160
        }
21161
0
    }
21162
0
    extern "system" fn cmd_copy_memory_to_micromap_ext(
21163
0
        command_buffer: vk::CommandBuffer,
21164
0
        p_info: *const vk::CopyMemoryToMicromapInfoEXT,
21165
0
    ) {
21166
0
        let global = Self::instance();
21167
0
        // vkCmdCopyMemoryToMicromapEXT
21168
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21169
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21170
0
        let layer_result = device_info
21171
0
            .customized_info
21172
0
            .borrow()
21173
0
            .hooks()
21174
0
            .cmd_copy_memory_to_micromap_ext(command_buffer, unsafe { p_info.as_ref() }.unwrap());
21175
0
        match layer_result {
21176
0
            LayerResult::Handled(res) => res,
21177
            LayerResult::Unhandled => unsafe {
21178
0
                (dispatch_table.cmd_copy_memory_to_micromap_ext)(command_buffer, p_info)
21179
            },
21180
        }
21181
0
    }
21182
0
    extern "system" fn cmd_write_micromaps_properties_ext(
21183
0
        command_buffer: vk::CommandBuffer,
21184
0
        micromap_count: u32,
21185
0
        p_micromaps: *const vk::MicromapEXT,
21186
0
        query_type: vk::QueryType,
21187
0
        query_pool: vk::QueryPool,
21188
0
        first_query: u32,
21189
0
    ) {
21190
0
        let global = Self::instance();
21191
0
        // vkCmdWriteMicromapsPropertiesEXT
21192
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21193
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21194
0
        let layer_result = device_info
21195
0
            .customized_info
21196
0
            .borrow()
21197
0
            .hooks()
21198
0
            .cmd_write_micromaps_properties_ext(
21199
0
                command_buffer,
21200
0
                unsafe { slice_from_raw_parts(p_micromaps, micromap_count) },
21201
0
                query_type,
21202
0
                query_pool,
21203
0
                first_query,
21204
0
            );
21205
0
        match layer_result {
21206
0
            LayerResult::Handled(res) => res,
21207
            LayerResult::Unhandled => unsafe {
21208
0
                (dispatch_table.cmd_write_micromaps_properties_ext)(
21209
0
                    command_buffer,
21210
0
                    micromap_count,
21211
0
                    p_micromaps,
21212
0
                    query_type,
21213
0
                    query_pool,
21214
0
                    first_query,
21215
0
                )
21216
            },
21217
        }
21218
0
    }
21219
0
    extern "system" fn get_device_micromap_compatibility_ext(
21220
0
        device: vk::Device,
21221
0
        p_version_info: *const vk::MicromapVersionInfoEXT,
21222
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
21223
0
    ) {
21224
0
        let global = Self::instance();
21225
0
        // vkGetDeviceMicromapCompatibilityEXT
21226
0
        let device_info = global.get_device_info(device).unwrap();
21227
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21228
0
        let layer_result = device_info
21229
0
            .customized_info
21230
0
            .borrow()
21231
0
            .hooks()
21232
0
            .get_device_micromap_compatibility_ext(unsafe { p_version_info.as_ref() }.unwrap());
21233
0
        match layer_result {
21234
0
            LayerResult::Handled(res) => {
21235
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
21236
0
            }
21237
            LayerResult::Unhandled => unsafe {
21238
0
                (dispatch_table.get_device_micromap_compatibility_ext)(
21239
0
                    device,
21240
0
                    p_version_info,
21241
0
                    p_compatibility,
21242
0
                )
21243
            },
21244
        }
21245
0
    }
21246
0
    extern "system" fn get_micromap_build_sizes_ext(
21247
0
        device: vk::Device,
21248
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
21249
0
        p_build_info: *const vk::MicromapBuildInfoEXT,
21250
0
        p_size_info: *mut vk::MicromapBuildSizesInfoEXT,
21251
0
    ) {
21252
0
        let global = Self::instance();
21253
0
        // vkGetMicromapBuildSizesEXT
21254
0
        let device_info = global.get_device_info(device).unwrap();
21255
0
        let dispatch_table = &device_info.dispatch_table.ext_opacity_micromap;
21256
0
        let layer_result = device_info
21257
0
            .customized_info
21258
0
            .borrow()
21259
0
            .hooks()
21260
0
            .get_micromap_build_sizes_ext(
21261
0
                build_type,
21262
0
                unsafe { p_build_info.as_ref() }.unwrap(),
21263
0
                unsafe { ptr_as_uninit_mut(p_size_info) }.unwrap(),
21264
0
            );
21265
0
        match layer_result {
21266
0
            LayerResult::Handled(res) => res,
21267
            LayerResult::Unhandled => unsafe {
21268
0
                (dispatch_table.get_micromap_build_sizes_ext)(
21269
0
                    device,
21270
0
                    build_type,
21271
0
                    p_build_info,
21272
0
                    p_size_info,
21273
0
                )
21274
            },
21275
        }
21276
0
    }
21277
0
    extern "system" fn set_device_memory_priority_ext(
21278
0
        device: vk::Device,
21279
0
        memory: vk::DeviceMemory,
21280
0
        priority: f32,
21281
0
    ) {
21282
0
        let global = Self::instance();
21283
0
        // vkSetDeviceMemoryPriorityEXT
21284
0
        let device_info = global.get_device_info(device).unwrap();
21285
0
        let dispatch_table = &device_info.dispatch_table.ext_pageable_device_local_memory;
21286
0
        let layer_result = device_info
21287
0
            .customized_info
21288
0
            .borrow()
21289
0
            .hooks()
21290
0
            .set_device_memory_priority_ext(memory, priority);
21291
0
        match layer_result {
21292
0
            LayerResult::Handled(res) => res,
21293
            LayerResult::Unhandled => unsafe {
21294
0
                (dispatch_table.set_device_memory_priority_ext)(device, memory, priority)
21295
            },
21296
        }
21297
0
    }
21298
0
    extern "system" fn get_descriptor_set_layout_host_mapping_info_valve(
21299
0
        device: vk::Device,
21300
0
        p_binding_reference: *const vk::DescriptorSetBindingReferenceVALVE,
21301
0
        p_host_mapping: *mut vk::DescriptorSetLayoutHostMappingInfoVALVE,
21302
0
    ) {
21303
0
        let global = Self::instance();
21304
0
        // vkGetDescriptorSetLayoutHostMappingInfoVALVE
21305
0
        let device_info = global.get_device_info(device).unwrap();
21306
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21307
0
        let layer_result = device_info
21308
0
            .customized_info
21309
0
            .borrow()
21310
0
            .hooks()
21311
0
            .get_descriptor_set_layout_host_mapping_info_valve(
21312
0
                unsafe { p_binding_reference.as_ref() }.unwrap(),
21313
0
                unsafe { ptr_as_uninit_mut(p_host_mapping) }.unwrap(),
21314
0
            );
21315
0
        match layer_result {
21316
0
            LayerResult::Handled(res) => res,
21317
            LayerResult::Unhandled => unsafe {
21318
0
                (dispatch_table.get_descriptor_set_layout_host_mapping_info_valve)(
21319
0
                    device,
21320
0
                    p_binding_reference,
21321
0
                    p_host_mapping,
21322
0
                )
21323
            },
21324
        }
21325
0
    }
21326
0
    extern "system" fn get_descriptor_set_host_mapping_valve(
21327
0
        device: vk::Device,
21328
0
        descriptor_set: vk::DescriptorSet,
21329
0
        pp_data: *mut *mut c_void,
21330
0
    ) {
21331
0
        let global = Self::instance();
21332
0
        // vkGetDescriptorSetHostMappingVALVE
21333
0
        let device_info = global.get_device_info(device).unwrap();
21334
0
        let dispatch_table = &device_info.dispatch_table.valve_descriptor_set_host_mapping;
21335
0
        let layer_result = device_info
21336
0
            .customized_info
21337
0
            .borrow()
21338
0
            .hooks()
21339
0
            .get_descriptor_set_host_mapping_valve(descriptor_set);
21340
0
        match layer_result {
21341
0
            LayerResult::Handled(res) => {
21342
0
                *unsafe { pp_data.as_mut() }.unwrap() = res;
21343
0
            }
21344
            LayerResult::Unhandled => unsafe {
21345
0
                (dispatch_table.get_descriptor_set_host_mapping_valve)(
21346
0
                    device,
21347
0
                    descriptor_set,
21348
0
                    pp_data,
21349
0
                )
21350
            },
21351
        }
21352
0
    }
21353
0
    extern "system" fn cmd_copy_memory_indirect_nv(
21354
0
        command_buffer: vk::CommandBuffer,
21355
0
        copy_buffer_address: vk::DeviceAddress,
21356
0
        copy_count: u32,
21357
0
        stride: u32,
21358
0
    ) {
21359
0
        let global = Self::instance();
21360
0
        // vkCmdCopyMemoryIndirectNV
21361
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21362
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21363
0
        let layer_result = device_info
21364
0
            .customized_info
21365
0
            .borrow()
21366
0
            .hooks()
21367
0
            .cmd_copy_memory_indirect_nv(command_buffer, copy_buffer_address, copy_count, stride);
21368
0
        match layer_result {
21369
0
            LayerResult::Handled(res) => res,
21370
            LayerResult::Unhandled => unsafe {
21371
0
                (dispatch_table.cmd_copy_memory_indirect_nv)(
21372
0
                    command_buffer,
21373
0
                    copy_buffer_address,
21374
0
                    copy_count,
21375
0
                    stride,
21376
0
                )
21377
            },
21378
        }
21379
0
    }
21380
0
    extern "system" fn cmd_copy_memory_to_image_indirect_nv(
21381
0
        command_buffer: vk::CommandBuffer,
21382
0
        copy_buffer_address: vk::DeviceAddress,
21383
0
        copy_count: u32,
21384
0
        stride: u32,
21385
0
        dst_image: vk::Image,
21386
0
        dst_image_layout: vk::ImageLayout,
21387
0
        p_image_subresources: *const vk::ImageSubresourceLayers,
21388
0
    ) {
21389
0
        let global = Self::instance();
21390
0
        // vkCmdCopyMemoryToImageIndirectNV
21391
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21392
0
        let dispatch_table = &device_info.dispatch_table.nv_copy_memory_indirect;
21393
0
        let layer_result = device_info
21394
0
            .customized_info
21395
0
            .borrow()
21396
0
            .hooks()
21397
0
            .cmd_copy_memory_to_image_indirect_nv(
21398
0
                command_buffer,
21399
0
                copy_buffer_address,
21400
0
                stride,
21401
0
                dst_image,
21402
0
                dst_image_layout,
21403
0
                unsafe { slice_from_raw_parts(p_image_subresources, copy_count) },
21404
0
            );
21405
0
        match layer_result {
21406
0
            LayerResult::Handled(res) => res,
21407
            LayerResult::Unhandled => unsafe {
21408
0
                (dispatch_table.cmd_copy_memory_to_image_indirect_nv)(
21409
0
                    command_buffer,
21410
0
                    copy_buffer_address,
21411
0
                    copy_count,
21412
0
                    stride,
21413
0
                    dst_image,
21414
0
                    dst_image_layout,
21415
0
                    p_image_subresources,
21416
0
                )
21417
            },
21418
        }
21419
0
    }
21420
0
    extern "system" fn cmd_decompress_memory_nv(
21421
0
        command_buffer: vk::CommandBuffer,
21422
0
        decompress_region_count: u32,
21423
0
        p_decompress_memory_regions: *const vk::DecompressMemoryRegionNV,
21424
0
    ) {
21425
0
        let global = Self::instance();
21426
0
        // vkCmdDecompressMemoryNV
21427
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21428
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21429
0
        let layer_result = device_info
21430
0
            .customized_info
21431
0
            .borrow()
21432
0
            .hooks()
21433
0
            .cmd_decompress_memory_nv(command_buffer, unsafe {
21434
0
                slice_from_raw_parts(p_decompress_memory_regions, decompress_region_count)
21435
0
            });
21436
0
        match layer_result {
21437
0
            LayerResult::Handled(res) => res,
21438
            LayerResult::Unhandled => unsafe {
21439
0
                (dispatch_table.cmd_decompress_memory_nv)(
21440
0
                    command_buffer,
21441
0
                    decompress_region_count,
21442
0
                    p_decompress_memory_regions,
21443
0
                )
21444
            },
21445
        }
21446
0
    }
21447
0
    extern "system" fn cmd_decompress_memory_indirect_count_nv(
21448
0
        command_buffer: vk::CommandBuffer,
21449
0
        indirect_commands_address: vk::DeviceAddress,
21450
0
        indirect_commands_count_address: vk::DeviceAddress,
21451
0
        stride: u32,
21452
0
    ) {
21453
0
        let global = Self::instance();
21454
0
        // vkCmdDecompressMemoryIndirectCountNV
21455
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21456
0
        let dispatch_table = &device_info.dispatch_table.nv_memory_decompression;
21457
0
        let layer_result = device_info
21458
0
            .customized_info
21459
0
            .borrow()
21460
0
            .hooks()
21461
0
            .cmd_decompress_memory_indirect_count_nv(
21462
0
                command_buffer,
21463
0
                indirect_commands_address,
21464
0
                indirect_commands_count_address,
21465
0
                stride,
21466
0
            );
21467
0
        match layer_result {
21468
0
            LayerResult::Handled(res) => res,
21469
            LayerResult::Unhandled => unsafe {
21470
0
                (dispatch_table.cmd_decompress_memory_indirect_count_nv)(
21471
0
                    command_buffer,
21472
0
                    indirect_commands_address,
21473
0
                    indirect_commands_count_address,
21474
0
                    stride,
21475
0
                )
21476
            },
21477
        }
21478
0
    }
21479
0
    extern "system" fn cmd_set_tessellation_domain_origin_ext(
21480
0
        command_buffer: vk::CommandBuffer,
21481
0
        domain_origin: vk::TessellationDomainOrigin,
21482
0
    ) {
21483
0
        let global = Self::instance();
21484
0
        // vkCmdSetTessellationDomainOriginEXT
21485
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21486
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21487
0
        let layer_result = device_info
21488
0
            .customized_info
21489
0
            .borrow()
21490
0
            .hooks()
21491
0
            .cmd_set_tessellation_domain_origin_ext(command_buffer, domain_origin);
21492
0
        match layer_result {
21493
0
            LayerResult::Handled(res) => res,
21494
            LayerResult::Unhandled => unsafe {
21495
0
                (dispatch_table.cmd_set_tessellation_domain_origin_ext)(
21496
0
                    command_buffer,
21497
0
                    domain_origin,
21498
0
                )
21499
            },
21500
        }
21501
0
    }
21502
0
    extern "system" fn cmd_set_depth_clamp_enable_ext(
21503
0
        command_buffer: vk::CommandBuffer,
21504
0
        depth_clamp_enable: vk::Bool32,
21505
0
    ) {
21506
0
        let global = Self::instance();
21507
0
        // vkCmdSetDepthClampEnableEXT
21508
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21509
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21510
0
        let layer_result = device_info
21511
0
            .customized_info
21512
0
            .borrow()
21513
0
            .hooks()
21514
0
            .cmd_set_depth_clamp_enable_ext(command_buffer, depth_clamp_enable == vk::TRUE);
21515
0
        match layer_result {
21516
0
            LayerResult::Handled(res) => res,
21517
            LayerResult::Unhandled => unsafe {
21518
0
                (dispatch_table.cmd_set_depth_clamp_enable_ext)(command_buffer, depth_clamp_enable)
21519
            },
21520
        }
21521
0
    }
21522
0
    extern "system" fn cmd_set_polygon_mode_ext(
21523
0
        command_buffer: vk::CommandBuffer,
21524
0
        polygon_mode: vk::PolygonMode,
21525
0
    ) {
21526
0
        let global = Self::instance();
21527
0
        // vkCmdSetPolygonModeEXT
21528
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21529
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21530
0
        let layer_result = device_info
21531
0
            .customized_info
21532
0
            .borrow()
21533
0
            .hooks()
21534
0
            .cmd_set_polygon_mode_ext(command_buffer, polygon_mode);
21535
0
        match layer_result {
21536
0
            LayerResult::Handled(res) => res,
21537
            LayerResult::Unhandled => unsafe {
21538
0
                (dispatch_table.cmd_set_polygon_mode_ext)(command_buffer, polygon_mode)
21539
            },
21540
        }
21541
0
    }
21542
0
    extern "system" fn cmd_set_rasterization_samples_ext(
21543
0
        command_buffer: vk::CommandBuffer,
21544
0
        rasterization_samples: vk::SampleCountFlags,
21545
0
    ) {
21546
0
        let global = Self::instance();
21547
0
        // vkCmdSetRasterizationSamplesEXT
21548
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21549
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21550
0
        let layer_result = device_info
21551
0
            .customized_info
21552
0
            .borrow()
21553
0
            .hooks()
21554
0
            .cmd_set_rasterization_samples_ext(command_buffer, rasterization_samples);
21555
0
        match layer_result {
21556
0
            LayerResult::Handled(res) => res,
21557
            LayerResult::Unhandled => unsafe {
21558
0
                (dispatch_table.cmd_set_rasterization_samples_ext)(
21559
0
                    command_buffer,
21560
0
                    rasterization_samples,
21561
0
                )
21562
            },
21563
        }
21564
0
    }
21565
0
    extern "system" fn cmd_set_sample_mask_ext(
21566
0
        command_buffer: vk::CommandBuffer,
21567
0
        samples: vk::SampleCountFlags,
21568
0
        p_sample_mask: *const vk::SampleMask,
21569
0
    ) {
21570
0
        let global = Self::instance();
21571
0
        // vkCmdSetSampleMaskEXT
21572
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21573
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21574
0
        let layer_result = device_info
21575
0
            .customized_info
21576
0
            .borrow()
21577
0
            .hooks()
21578
0
            .cmd_set_sample_mask_ext(command_buffer, samples, unsafe {
21579
0
                slice_from_raw_parts(p_sample_mask, (samples.as_raw() + 31) / 32)
21580
0
            });
21581
0
        match layer_result {
21582
0
            LayerResult::Handled(res) => res,
21583
            LayerResult::Unhandled => unsafe {
21584
0
                (dispatch_table.cmd_set_sample_mask_ext)(command_buffer, samples, p_sample_mask)
21585
            },
21586
        }
21587
0
    }
21588
0
    extern "system" fn cmd_set_alpha_to_coverage_enable_ext(
21589
0
        command_buffer: vk::CommandBuffer,
21590
0
        alpha_to_coverage_enable: vk::Bool32,
21591
0
    ) {
21592
0
        let global = Self::instance();
21593
0
        // vkCmdSetAlphaToCoverageEnableEXT
21594
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21595
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21596
0
        let layer_result = device_info
21597
0
            .customized_info
21598
0
            .borrow()
21599
0
            .hooks()
21600
0
            .cmd_set_alpha_to_coverage_enable_ext(
21601
0
                command_buffer,
21602
0
                alpha_to_coverage_enable == vk::TRUE,
21603
0
            );
21604
0
        match layer_result {
21605
0
            LayerResult::Handled(res) => res,
21606
            LayerResult::Unhandled => unsafe {
21607
0
                (dispatch_table.cmd_set_alpha_to_coverage_enable_ext)(
21608
0
                    command_buffer,
21609
0
                    alpha_to_coverage_enable,
21610
0
                )
21611
            },
21612
        }
21613
0
    }
21614
0
    extern "system" fn cmd_set_alpha_to_one_enable_ext(
21615
0
        command_buffer: vk::CommandBuffer,
21616
0
        alpha_to_one_enable: vk::Bool32,
21617
0
    ) {
21618
0
        let global = Self::instance();
21619
0
        // vkCmdSetAlphaToOneEnableEXT
21620
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21621
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21622
0
        let layer_result = device_info
21623
0
            .customized_info
21624
0
            .borrow()
21625
0
            .hooks()
21626
0
            .cmd_set_alpha_to_one_enable_ext(command_buffer, alpha_to_one_enable == vk::TRUE);
21627
0
        match layer_result {
21628
0
            LayerResult::Handled(res) => res,
21629
            LayerResult::Unhandled => unsafe {
21630
0
                (dispatch_table.cmd_set_alpha_to_one_enable_ext)(
21631
0
                    command_buffer,
21632
0
                    alpha_to_one_enable,
21633
0
                )
21634
            },
21635
        }
21636
0
    }
21637
0
    extern "system" fn cmd_set_logic_op_enable_ext(
21638
0
        command_buffer: vk::CommandBuffer,
21639
0
        logic_op_enable: vk::Bool32,
21640
0
    ) {
21641
0
        let global = Self::instance();
21642
0
        // vkCmdSetLogicOpEnableEXT
21643
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21644
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21645
0
        let layer_result = device_info
21646
0
            .customized_info
21647
0
            .borrow()
21648
0
            .hooks()
21649
0
            .cmd_set_logic_op_enable_ext(command_buffer, logic_op_enable == vk::TRUE);
21650
0
        match layer_result {
21651
0
            LayerResult::Handled(res) => res,
21652
            LayerResult::Unhandled => unsafe {
21653
0
                (dispatch_table.cmd_set_logic_op_enable_ext)(command_buffer, logic_op_enable)
21654
            },
21655
        }
21656
0
    }
21657
0
    extern "system" fn cmd_set_color_blend_enable_ext(
21658
0
        command_buffer: vk::CommandBuffer,
21659
0
        first_attachment: u32,
21660
0
        attachment_count: u32,
21661
0
        p_color_blend_enables: *const vk::Bool32,
21662
0
    ) {
21663
0
        let global = Self::instance();
21664
0
        // vkCmdSetColorBlendEnableEXT
21665
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21666
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21667
0
        let layer_result = device_info
21668
0
            .customized_info
21669
0
            .borrow()
21670
0
            .hooks()
21671
0
            .cmd_set_color_blend_enable_ext(command_buffer, first_attachment, unsafe {
21672
0
                bool_iterator_from_raw_parts(p_color_blend_enables, attachment_count)
21673
0
            });
21674
0
        match layer_result {
21675
0
            LayerResult::Handled(res) => res,
21676
            LayerResult::Unhandled => unsafe {
21677
0
                (dispatch_table.cmd_set_color_blend_enable_ext)(
21678
0
                    command_buffer,
21679
0
                    first_attachment,
21680
0
                    attachment_count,
21681
0
                    p_color_blend_enables,
21682
0
                )
21683
            },
21684
        }
21685
0
    }
21686
0
    extern "system" fn cmd_set_color_blend_equation_ext(
21687
0
        command_buffer: vk::CommandBuffer,
21688
0
        first_attachment: u32,
21689
0
        attachment_count: u32,
21690
0
        p_color_blend_equations: *const vk::ColorBlendEquationEXT,
21691
0
    ) {
21692
0
        let global = Self::instance();
21693
0
        // vkCmdSetColorBlendEquationEXT
21694
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21695
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21696
0
        let layer_result = device_info
21697
0
            .customized_info
21698
0
            .borrow()
21699
0
            .hooks()
21700
0
            .cmd_set_color_blend_equation_ext(command_buffer, first_attachment, unsafe {
21701
0
                slice_from_raw_parts(p_color_blend_equations, attachment_count)
21702
0
            });
21703
0
        match layer_result {
21704
0
            LayerResult::Handled(res) => res,
21705
            LayerResult::Unhandled => unsafe {
21706
0
                (dispatch_table.cmd_set_color_blend_equation_ext)(
21707
0
                    command_buffer,
21708
0
                    first_attachment,
21709
0
                    attachment_count,
21710
0
                    p_color_blend_equations,
21711
0
                )
21712
            },
21713
        }
21714
0
    }
21715
0
    extern "system" fn cmd_set_color_write_mask_ext(
21716
0
        command_buffer: vk::CommandBuffer,
21717
0
        first_attachment: u32,
21718
0
        attachment_count: u32,
21719
0
        p_color_write_masks: *const vk::ColorComponentFlags,
21720
0
    ) {
21721
0
        let global = Self::instance();
21722
0
        // vkCmdSetColorWriteMaskEXT
21723
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21724
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21725
0
        let layer_result = device_info
21726
0
            .customized_info
21727
0
            .borrow()
21728
0
            .hooks()
21729
0
            .cmd_set_color_write_mask_ext(command_buffer, first_attachment, unsafe {
21730
0
                slice_from_raw_parts(p_color_write_masks, attachment_count)
21731
0
            });
21732
0
        match layer_result {
21733
0
            LayerResult::Handled(res) => res,
21734
            LayerResult::Unhandled => unsafe {
21735
0
                (dispatch_table.cmd_set_color_write_mask_ext)(
21736
0
                    command_buffer,
21737
0
                    first_attachment,
21738
0
                    attachment_count,
21739
0
                    p_color_write_masks,
21740
0
                )
21741
            },
21742
        }
21743
0
    }
21744
0
    extern "system" fn cmd_set_rasterization_stream_ext(
21745
0
        command_buffer: vk::CommandBuffer,
21746
0
        rasterization_stream: u32,
21747
0
    ) {
21748
0
        let global = Self::instance();
21749
0
        // vkCmdSetRasterizationStreamEXT
21750
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21751
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21752
0
        let layer_result = device_info
21753
0
            .customized_info
21754
0
            .borrow()
21755
0
            .hooks()
21756
0
            .cmd_set_rasterization_stream_ext(command_buffer, rasterization_stream);
21757
0
        match layer_result {
21758
0
            LayerResult::Handled(res) => res,
21759
            LayerResult::Unhandled => unsafe {
21760
0
                (dispatch_table.cmd_set_rasterization_stream_ext)(
21761
0
                    command_buffer,
21762
0
                    rasterization_stream,
21763
0
                )
21764
            },
21765
        }
21766
0
    }
21767
0
    extern "system" fn cmd_set_conservative_rasterization_mode_ext(
21768
0
        command_buffer: vk::CommandBuffer,
21769
0
        conservative_rasterization_mode: vk::ConservativeRasterizationModeEXT,
21770
0
    ) {
21771
0
        let global = Self::instance();
21772
0
        // vkCmdSetConservativeRasterizationModeEXT
21773
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21774
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21775
0
        let layer_result = device_info
21776
0
            .customized_info
21777
0
            .borrow()
21778
0
            .hooks()
21779
0
            .cmd_set_conservative_rasterization_mode_ext(
21780
0
                command_buffer,
21781
0
                conservative_rasterization_mode,
21782
0
            );
21783
0
        match layer_result {
21784
0
            LayerResult::Handled(res) => res,
21785
            LayerResult::Unhandled => unsafe {
21786
0
                (dispatch_table.cmd_set_conservative_rasterization_mode_ext)(
21787
0
                    command_buffer,
21788
0
                    conservative_rasterization_mode,
21789
0
                )
21790
            },
21791
        }
21792
0
    }
21793
0
    extern "system" fn cmd_set_extra_primitive_overestimation_size_ext(
21794
0
        command_buffer: vk::CommandBuffer,
21795
0
        extra_primitive_overestimation_size: f32,
21796
0
    ) {
21797
0
        let global = Self::instance();
21798
0
        // vkCmdSetExtraPrimitiveOverestimationSizeEXT
21799
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21800
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21801
0
        let layer_result = device_info
21802
0
            .customized_info
21803
0
            .borrow()
21804
0
            .hooks()
21805
0
            .cmd_set_extra_primitive_overestimation_size_ext(
21806
0
                command_buffer,
21807
0
                extra_primitive_overestimation_size,
21808
0
            );
21809
0
        match layer_result {
21810
0
            LayerResult::Handled(res) => res,
21811
            LayerResult::Unhandled => unsafe {
21812
0
                (dispatch_table.cmd_set_extra_primitive_overestimation_size_ext)(
21813
0
                    command_buffer,
21814
0
                    extra_primitive_overestimation_size,
21815
0
                )
21816
            },
21817
        }
21818
0
    }
21819
0
    extern "system" fn cmd_set_depth_clip_enable_ext(
21820
0
        command_buffer: vk::CommandBuffer,
21821
0
        depth_clip_enable: vk::Bool32,
21822
0
    ) {
21823
0
        let global = Self::instance();
21824
0
        // vkCmdSetDepthClipEnableEXT
21825
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21826
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21827
0
        let layer_result = device_info
21828
0
            .customized_info
21829
0
            .borrow()
21830
0
            .hooks()
21831
0
            .cmd_set_depth_clip_enable_ext(command_buffer, depth_clip_enable == vk::TRUE);
21832
0
        match layer_result {
21833
0
            LayerResult::Handled(res) => res,
21834
            LayerResult::Unhandled => unsafe {
21835
0
                (dispatch_table.cmd_set_depth_clip_enable_ext)(command_buffer, depth_clip_enable)
21836
            },
21837
        }
21838
0
    }
21839
0
    extern "system" fn cmd_set_sample_locations_enable_ext(
21840
0
        command_buffer: vk::CommandBuffer,
21841
0
        sample_locations_enable: vk::Bool32,
21842
0
    ) {
21843
0
        let global = Self::instance();
21844
0
        // vkCmdSetSampleLocationsEnableEXT
21845
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21846
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21847
0
        let layer_result = device_info
21848
0
            .customized_info
21849
0
            .borrow()
21850
0
            .hooks()
21851
0
            .cmd_set_sample_locations_enable_ext(
21852
0
                command_buffer,
21853
0
                sample_locations_enable == vk::TRUE,
21854
0
            );
21855
0
        match layer_result {
21856
0
            LayerResult::Handled(res) => res,
21857
            LayerResult::Unhandled => unsafe {
21858
0
                (dispatch_table.cmd_set_sample_locations_enable_ext)(
21859
0
                    command_buffer,
21860
0
                    sample_locations_enable,
21861
0
                )
21862
            },
21863
        }
21864
0
    }
21865
0
    extern "system" fn cmd_set_color_blend_advanced_ext(
21866
0
        command_buffer: vk::CommandBuffer,
21867
0
        first_attachment: u32,
21868
0
        attachment_count: u32,
21869
0
        p_color_blend_advanced: *const vk::ColorBlendAdvancedEXT,
21870
0
    ) {
21871
0
        let global = Self::instance();
21872
0
        // vkCmdSetColorBlendAdvancedEXT
21873
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21874
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21875
0
        let layer_result = device_info
21876
0
            .customized_info
21877
0
            .borrow()
21878
0
            .hooks()
21879
0
            .cmd_set_color_blend_advanced_ext(command_buffer, first_attachment, unsafe {
21880
0
                slice_from_raw_parts(p_color_blend_advanced, attachment_count)
21881
0
            });
21882
0
        match layer_result {
21883
0
            LayerResult::Handled(res) => res,
21884
            LayerResult::Unhandled => unsafe {
21885
0
                (dispatch_table.cmd_set_color_blend_advanced_ext)(
21886
0
                    command_buffer,
21887
0
                    first_attachment,
21888
0
                    attachment_count,
21889
0
                    p_color_blend_advanced,
21890
0
                )
21891
            },
21892
        }
21893
0
    }
21894
0
    extern "system" fn cmd_set_provoking_vertex_mode_ext(
21895
0
        command_buffer: vk::CommandBuffer,
21896
0
        provoking_vertex_mode: vk::ProvokingVertexModeEXT,
21897
0
    ) {
21898
0
        let global = Self::instance();
21899
0
        // vkCmdSetProvokingVertexModeEXT
21900
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21901
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21902
0
        let layer_result = device_info
21903
0
            .customized_info
21904
0
            .borrow()
21905
0
            .hooks()
21906
0
            .cmd_set_provoking_vertex_mode_ext(command_buffer, provoking_vertex_mode);
21907
0
        match layer_result {
21908
0
            LayerResult::Handled(res) => res,
21909
            LayerResult::Unhandled => unsafe {
21910
0
                (dispatch_table.cmd_set_provoking_vertex_mode_ext)(
21911
0
                    command_buffer,
21912
0
                    provoking_vertex_mode,
21913
0
                )
21914
            },
21915
        }
21916
0
    }
21917
0
    extern "system" fn cmd_set_line_rasterization_mode_ext(
21918
0
        command_buffer: vk::CommandBuffer,
21919
0
        line_rasterization_mode: vk::LineRasterizationModeEXT,
21920
0
    ) {
21921
0
        let global = Self::instance();
21922
0
        // vkCmdSetLineRasterizationModeEXT
21923
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21924
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21925
0
        let layer_result = device_info
21926
0
            .customized_info
21927
0
            .borrow()
21928
0
            .hooks()
21929
0
            .cmd_set_line_rasterization_mode_ext(command_buffer, line_rasterization_mode);
21930
0
        match layer_result {
21931
0
            LayerResult::Handled(res) => res,
21932
            LayerResult::Unhandled => unsafe {
21933
0
                (dispatch_table.cmd_set_line_rasterization_mode_ext)(
21934
0
                    command_buffer,
21935
0
                    line_rasterization_mode,
21936
0
                )
21937
            },
21938
        }
21939
0
    }
21940
0
    extern "system" fn cmd_set_line_stipple_enable_ext(
21941
0
        command_buffer: vk::CommandBuffer,
21942
0
        stippled_line_enable: vk::Bool32,
21943
0
    ) {
21944
0
        let global = Self::instance();
21945
0
        // vkCmdSetLineStippleEnableEXT
21946
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21947
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21948
0
        let layer_result = device_info
21949
0
            .customized_info
21950
0
            .borrow()
21951
0
            .hooks()
21952
0
            .cmd_set_line_stipple_enable_ext(command_buffer, stippled_line_enable == vk::TRUE);
21953
0
        match layer_result {
21954
0
            LayerResult::Handled(res) => res,
21955
            LayerResult::Unhandled => unsafe {
21956
0
                (dispatch_table.cmd_set_line_stipple_enable_ext)(
21957
0
                    command_buffer,
21958
0
                    stippled_line_enable,
21959
0
                )
21960
            },
21961
        }
21962
0
    }
21963
0
    extern "system" fn cmd_set_depth_clip_negative_one_to_one_ext(
21964
0
        command_buffer: vk::CommandBuffer,
21965
0
        negative_one_to_one: vk::Bool32,
21966
0
    ) {
21967
0
        let global = Self::instance();
21968
0
        // vkCmdSetDepthClipNegativeOneToOneEXT
21969
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21970
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21971
0
        let layer_result = device_info
21972
0
            .customized_info
21973
0
            .borrow()
21974
0
            .hooks()
21975
0
            .cmd_set_depth_clip_negative_one_to_one_ext(
21976
0
                command_buffer,
21977
0
                negative_one_to_one == vk::TRUE,
21978
0
            );
21979
0
        match layer_result {
21980
0
            LayerResult::Handled(res) => res,
21981
            LayerResult::Unhandled => unsafe {
21982
0
                (dispatch_table.cmd_set_depth_clip_negative_one_to_one_ext)(
21983
0
                    command_buffer,
21984
0
                    negative_one_to_one,
21985
0
                )
21986
            },
21987
        }
21988
0
    }
21989
0
    extern "system" fn cmd_set_viewport_w_scaling_enable_nv(
21990
0
        command_buffer: vk::CommandBuffer,
21991
0
        viewport_w_scaling_enable: vk::Bool32,
21992
0
    ) {
21993
0
        let global = Self::instance();
21994
0
        // vkCmdSetViewportWScalingEnableNV
21995
0
        let device_info = global.get_device_info(command_buffer).unwrap();
21996
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
21997
0
        let layer_result = device_info
21998
0
            .customized_info
21999
0
            .borrow()
22000
0
            .hooks()
22001
0
            .cmd_set_viewport_w_scaling_enable_nv(
22002
0
                command_buffer,
22003
0
                viewport_w_scaling_enable == vk::TRUE,
22004
0
            );
22005
0
        match layer_result {
22006
0
            LayerResult::Handled(res) => res,
22007
            LayerResult::Unhandled => unsafe {
22008
0
                (dispatch_table.cmd_set_viewport_w_scaling_enable_nv)(
22009
0
                    command_buffer,
22010
0
                    viewport_w_scaling_enable,
22011
0
                )
22012
            },
22013
        }
22014
0
    }
22015
0
    extern "system" fn cmd_set_viewport_swizzle_nv(
22016
0
        command_buffer: vk::CommandBuffer,
22017
0
        first_viewport: u32,
22018
0
        viewport_count: u32,
22019
0
        p_viewport_swizzles: *const vk::ViewportSwizzleNV,
22020
0
    ) {
22021
0
        let global = Self::instance();
22022
0
        // vkCmdSetViewportSwizzleNV
22023
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22024
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22025
0
        let layer_result = device_info
22026
0
            .customized_info
22027
0
            .borrow()
22028
0
            .hooks()
22029
0
            .cmd_set_viewport_swizzle_nv(command_buffer, first_viewport, unsafe {
22030
0
                slice_from_raw_parts(p_viewport_swizzles, viewport_count)
22031
0
            });
22032
0
        match layer_result {
22033
0
            LayerResult::Handled(res) => res,
22034
            LayerResult::Unhandled => unsafe {
22035
0
                (dispatch_table.cmd_set_viewport_swizzle_nv)(
22036
0
                    command_buffer,
22037
0
                    first_viewport,
22038
0
                    viewport_count,
22039
0
                    p_viewport_swizzles,
22040
0
                )
22041
            },
22042
        }
22043
0
    }
22044
0
    extern "system" fn cmd_set_coverage_to_color_enable_nv(
22045
0
        command_buffer: vk::CommandBuffer,
22046
0
        coverage_to_color_enable: vk::Bool32,
22047
0
    ) {
22048
0
        let global = Self::instance();
22049
0
        // vkCmdSetCoverageToColorEnableNV
22050
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22051
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22052
0
        let layer_result = device_info
22053
0
            .customized_info
22054
0
            .borrow()
22055
0
            .hooks()
22056
0
            .cmd_set_coverage_to_color_enable_nv(
22057
0
                command_buffer,
22058
0
                coverage_to_color_enable == vk::TRUE,
22059
0
            );
22060
0
        match layer_result {
22061
0
            LayerResult::Handled(res) => res,
22062
            LayerResult::Unhandled => unsafe {
22063
0
                (dispatch_table.cmd_set_coverage_to_color_enable_nv)(
22064
0
                    command_buffer,
22065
0
                    coverage_to_color_enable,
22066
0
                )
22067
            },
22068
        }
22069
0
    }
22070
0
    extern "system" fn cmd_set_coverage_to_color_location_nv(
22071
0
        command_buffer: vk::CommandBuffer,
22072
0
        coverage_to_color_location: u32,
22073
0
    ) {
22074
0
        let global = Self::instance();
22075
0
        // vkCmdSetCoverageToColorLocationNV
22076
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22077
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22078
0
        let layer_result = device_info
22079
0
            .customized_info
22080
0
            .borrow()
22081
0
            .hooks()
22082
0
            .cmd_set_coverage_to_color_location_nv(command_buffer, coverage_to_color_location);
22083
0
        match layer_result {
22084
0
            LayerResult::Handled(res) => res,
22085
            LayerResult::Unhandled => unsafe {
22086
0
                (dispatch_table.cmd_set_coverage_to_color_location_nv)(
22087
0
                    command_buffer,
22088
0
                    coverage_to_color_location,
22089
0
                )
22090
            },
22091
        }
22092
0
    }
22093
0
    extern "system" fn cmd_set_coverage_modulation_mode_nv(
22094
0
        command_buffer: vk::CommandBuffer,
22095
0
        coverage_modulation_mode: vk::CoverageModulationModeNV,
22096
0
    ) {
22097
0
        let global = Self::instance();
22098
0
        // vkCmdSetCoverageModulationModeNV
22099
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22100
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22101
0
        let layer_result = device_info
22102
0
            .customized_info
22103
0
            .borrow()
22104
0
            .hooks()
22105
0
            .cmd_set_coverage_modulation_mode_nv(command_buffer, coverage_modulation_mode);
22106
0
        match layer_result {
22107
0
            LayerResult::Handled(res) => res,
22108
            LayerResult::Unhandled => unsafe {
22109
0
                (dispatch_table.cmd_set_coverage_modulation_mode_nv)(
22110
0
                    command_buffer,
22111
0
                    coverage_modulation_mode,
22112
0
                )
22113
            },
22114
        }
22115
0
    }
22116
0
    extern "system" fn cmd_set_coverage_modulation_table_enable_nv(
22117
0
        command_buffer: vk::CommandBuffer,
22118
0
        coverage_modulation_table_enable: vk::Bool32,
22119
0
    ) {
22120
0
        let global = Self::instance();
22121
0
        // vkCmdSetCoverageModulationTableEnableNV
22122
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22123
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22124
0
        let layer_result = device_info
22125
0
            .customized_info
22126
0
            .borrow()
22127
0
            .hooks()
22128
0
            .cmd_set_coverage_modulation_table_enable_nv(
22129
0
                command_buffer,
22130
0
                coverage_modulation_table_enable == vk::TRUE,
22131
0
            );
22132
0
        match layer_result {
22133
0
            LayerResult::Handled(res) => res,
22134
            LayerResult::Unhandled => unsafe {
22135
0
                (dispatch_table.cmd_set_coverage_modulation_table_enable_nv)(
22136
0
                    command_buffer,
22137
0
                    coverage_modulation_table_enable,
22138
0
                )
22139
            },
22140
        }
22141
0
    }
22142
0
    extern "system" fn cmd_set_coverage_modulation_table_nv(
22143
0
        command_buffer: vk::CommandBuffer,
22144
0
        coverage_modulation_table_count: u32,
22145
0
        p_coverage_modulation_table: *const f32,
22146
0
    ) {
22147
0
        let global = Self::instance();
22148
0
        // vkCmdSetCoverageModulationTableNV
22149
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22150
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22151
0
        let layer_result = device_info
22152
0
            .customized_info
22153
0
            .borrow()
22154
0
            .hooks()
22155
0
            .cmd_set_coverage_modulation_table_nv(command_buffer, unsafe {
22156
0
                slice_from_raw_parts(p_coverage_modulation_table, coverage_modulation_table_count)
22157
0
            });
22158
0
        match layer_result {
22159
0
            LayerResult::Handled(res) => res,
22160
            LayerResult::Unhandled => unsafe {
22161
0
                (dispatch_table.cmd_set_coverage_modulation_table_nv)(
22162
0
                    command_buffer,
22163
0
                    coverage_modulation_table_count,
22164
0
                    p_coverage_modulation_table,
22165
0
                )
22166
            },
22167
        }
22168
0
    }
22169
0
    extern "system" fn cmd_set_shading_rate_image_enable_nv(
22170
0
        command_buffer: vk::CommandBuffer,
22171
0
        shading_rate_image_enable: vk::Bool32,
22172
0
    ) {
22173
0
        let global = Self::instance();
22174
0
        // vkCmdSetShadingRateImageEnableNV
22175
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22176
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22177
0
        let layer_result = device_info
22178
0
            .customized_info
22179
0
            .borrow()
22180
0
            .hooks()
22181
0
            .cmd_set_shading_rate_image_enable_nv(
22182
0
                command_buffer,
22183
0
                shading_rate_image_enable == vk::TRUE,
22184
0
            );
22185
0
        match layer_result {
22186
0
            LayerResult::Handled(res) => res,
22187
            LayerResult::Unhandled => unsafe {
22188
0
                (dispatch_table.cmd_set_shading_rate_image_enable_nv)(
22189
0
                    command_buffer,
22190
0
                    shading_rate_image_enable,
22191
0
                )
22192
            },
22193
        }
22194
0
    }
22195
0
    extern "system" fn cmd_set_representative_fragment_test_enable_nv(
22196
0
        command_buffer: vk::CommandBuffer,
22197
0
        representative_fragment_test_enable: vk::Bool32,
22198
0
    ) {
22199
0
        let global = Self::instance();
22200
0
        // vkCmdSetRepresentativeFragmentTestEnableNV
22201
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22202
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22203
0
        let layer_result = device_info
22204
0
            .customized_info
22205
0
            .borrow()
22206
0
            .hooks()
22207
0
            .cmd_set_representative_fragment_test_enable_nv(
22208
0
                command_buffer,
22209
0
                representative_fragment_test_enable == vk::TRUE,
22210
0
            );
22211
0
        match layer_result {
22212
0
            LayerResult::Handled(res) => res,
22213
            LayerResult::Unhandled => unsafe {
22214
0
                (dispatch_table.cmd_set_representative_fragment_test_enable_nv)(
22215
0
                    command_buffer,
22216
0
                    representative_fragment_test_enable,
22217
0
                )
22218
            },
22219
        }
22220
0
    }
22221
0
    extern "system" fn cmd_set_coverage_reduction_mode_nv(
22222
0
        command_buffer: vk::CommandBuffer,
22223
0
        coverage_reduction_mode: vk::CoverageReductionModeNV,
22224
0
    ) {
22225
0
        let global = Self::instance();
22226
0
        // vkCmdSetCoverageReductionModeNV
22227
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22228
0
        let dispatch_table = &device_info.dispatch_table.ext_extended_dynamic_state3;
22229
0
        let layer_result = device_info
22230
0
            .customized_info
22231
0
            .borrow()
22232
0
            .hooks()
22233
0
            .cmd_set_coverage_reduction_mode_nv(command_buffer, coverage_reduction_mode);
22234
0
        match layer_result {
22235
0
            LayerResult::Handled(res) => res,
22236
            LayerResult::Unhandled => unsafe {
22237
0
                (dispatch_table.cmd_set_coverage_reduction_mode_nv)(
22238
0
                    command_buffer,
22239
0
                    coverage_reduction_mode,
22240
0
                )
22241
            },
22242
        }
22243
0
    }
22244
0
    extern "system" fn get_shader_module_identifier_ext(
22245
0
        device: vk::Device,
22246
0
        shader_module: vk::ShaderModule,
22247
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22248
0
    ) {
22249
0
        let global = Self::instance();
22250
0
        // vkGetShaderModuleIdentifierEXT
22251
0
        let device_info = global.get_device_info(device).unwrap();
22252
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22253
0
        let layer_result = device_info
22254
0
            .customized_info
22255
0
            .borrow()
22256
0
            .hooks()
22257
0
            .get_shader_module_identifier_ext(
22258
0
                shader_module,
22259
0
                unsafe { ptr_as_uninit_mut(p_identifier) }.unwrap(),
22260
0
            );
22261
0
        match layer_result {
22262
0
            LayerResult::Handled(res) => res,
22263
            LayerResult::Unhandled => unsafe {
22264
0
                (dispatch_table.get_shader_module_identifier_ext)(
22265
0
                    device,
22266
0
                    shader_module,
22267
0
                    p_identifier,
22268
0
                )
22269
            },
22270
        }
22271
0
    }
22272
0
    extern "system" fn get_shader_module_create_info_identifier_ext(
22273
0
        device: vk::Device,
22274
0
        p_create_info: *const vk::ShaderModuleCreateInfo,
22275
0
        p_identifier: *mut vk::ShaderModuleIdentifierEXT,
22276
0
    ) {
22277
0
        let global = Self::instance();
22278
0
        // vkGetShaderModuleCreateInfoIdentifierEXT
22279
0
        let device_info = global.get_device_info(device).unwrap();
22280
0
        let dispatch_table = &device_info.dispatch_table.ext_shader_module_identifier;
22281
0
        let layer_result = device_info
22282
0
            .customized_info
22283
0
            .borrow()
22284
0
            .hooks()
22285
0
            .get_shader_module_create_info_identifier_ext(
22286
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22287
0
                unsafe { ptr_as_uninit_mut(p_identifier) }.unwrap(),
22288
0
            );
22289
0
        match layer_result {
22290
0
            LayerResult::Handled(res) => res,
22291
            LayerResult::Unhandled => unsafe {
22292
0
                (dispatch_table.get_shader_module_create_info_identifier_ext)(
22293
0
                    device,
22294
0
                    p_create_info,
22295
0
                    p_identifier,
22296
0
                )
22297
            },
22298
        }
22299
0
    }
22300
0
    extern "system" fn create_optical_flow_session_nv(
22301
0
        device: vk::Device,
22302
0
        p_create_info: *const vk::OpticalFlowSessionCreateInfoNV,
22303
0
        p_allocator: *const vk::AllocationCallbacks,
22304
0
        p_session: *mut vk::OpticalFlowSessionNV,
22305
0
    ) -> vk::Result {
22306
0
        let global = Self::instance();
22307
0
        // vkCreateOpticalFlowSessionNV
22308
0
        let device_info = global.get_device_info(device).unwrap();
22309
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22310
0
        let layer_result = device_info
22311
0
            .customized_info
22312
0
            .borrow()
22313
0
            .hooks()
22314
0
            .create_optical_flow_session_nv(unsafe { p_create_info.as_ref() }.unwrap(), unsafe {
22315
0
                p_allocator.as_ref()
22316
0
            });
22317
0
        match layer_result {
22318
0
            LayerResult::Handled(res) => match res {
22319
0
                Ok(res) => {
22320
0
                    *unsafe { p_session.as_mut() }.unwrap() = res;
22321
0
                    vk::Result::SUCCESS
22322
                }
22323
0
                Err(e) => e,
22324
            },
22325
            LayerResult::Unhandled => unsafe {
22326
0
                (dispatch_table.create_optical_flow_session_nv)(
22327
0
                    device,
22328
0
                    p_create_info,
22329
0
                    p_allocator,
22330
0
                    p_session,
22331
0
                )
22332
            },
22333
        }
22334
0
    }
22335
0
    extern "system" fn destroy_optical_flow_session_nv(
22336
0
        device: vk::Device,
22337
0
        session: vk::OpticalFlowSessionNV,
22338
0
        p_allocator: *const vk::AllocationCallbacks,
22339
0
    ) {
22340
0
        let global = Self::instance();
22341
0
        // vkDestroyOpticalFlowSessionNV
22342
0
        let device_info = global.get_device_info(device).unwrap();
22343
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22344
0
        let layer_result = device_info
22345
0
            .customized_info
22346
0
            .borrow()
22347
0
            .hooks()
22348
0
            .destroy_optical_flow_session_nv(session, unsafe { p_allocator.as_ref() });
22349
0
        match layer_result {
22350
0
            LayerResult::Handled(res) => res,
22351
            LayerResult::Unhandled => unsafe {
22352
0
                (dispatch_table.destroy_optical_flow_session_nv)(device, session, p_allocator)
22353
            },
22354
        }
22355
0
    }
22356
0
    extern "system" fn bind_optical_flow_session_image_nv(
22357
0
        device: vk::Device,
22358
0
        session: vk::OpticalFlowSessionNV,
22359
0
        binding_point: vk::OpticalFlowSessionBindingPointNV,
22360
0
        view: vk::ImageView,
22361
0
        layout: vk::ImageLayout,
22362
0
    ) -> vk::Result {
22363
0
        let global = Self::instance();
22364
0
        // vkBindOpticalFlowSessionImageNV
22365
0
        let device_info = global.get_device_info(device).unwrap();
22366
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22367
0
        let layer_result = device_info
22368
0
            .customized_info
22369
0
            .borrow()
22370
0
            .hooks()
22371
0
            .bind_optical_flow_session_image_nv(session, binding_point, view, layout);
22372
0
        match layer_result {
22373
0
            LayerResult::Handled(res) => match res {
22374
0
                Ok(()) => vk::Result::SUCCESS,
22375
0
                Err(e) => e,
22376
            },
22377
            LayerResult::Unhandled => unsafe {
22378
0
                (dispatch_table.bind_optical_flow_session_image_nv)(
22379
0
                    device,
22380
0
                    session,
22381
0
                    binding_point,
22382
0
                    view,
22383
0
                    layout,
22384
0
                )
22385
            },
22386
        }
22387
0
    }
22388
0
    extern "system" fn cmd_optical_flow_execute_nv(
22389
0
        command_buffer: vk::CommandBuffer,
22390
0
        session: vk::OpticalFlowSessionNV,
22391
0
        p_execute_info: *const vk::OpticalFlowExecuteInfoNV,
22392
0
    ) {
22393
0
        let global = Self::instance();
22394
0
        // vkCmdOpticalFlowExecuteNV
22395
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22396
0
        let dispatch_table = &device_info.dispatch_table.nv_optical_flow;
22397
0
        let layer_result = device_info
22398
0
            .customized_info
22399
0
            .borrow()
22400
0
            .hooks()
22401
0
            .cmd_optical_flow_execute_nv(
22402
0
                command_buffer,
22403
0
                session,
22404
0
                unsafe { p_execute_info.as_ref() }.unwrap(),
22405
0
            );
22406
0
        match layer_result {
22407
0
            LayerResult::Handled(res) => res,
22408
            LayerResult::Unhandled => unsafe {
22409
0
                (dispatch_table.cmd_optical_flow_execute_nv)(
22410
0
                    command_buffer,
22411
0
                    session,
22412
0
                    p_execute_info,
22413
0
                )
22414
            },
22415
        }
22416
0
    }
22417
0
    extern "system" fn get_framebuffer_tile_properties_qcom(
22418
0
        device: vk::Device,
22419
0
        framebuffer: vk::Framebuffer,
22420
0
        p_properties_count: *mut u32,
22421
0
        p_properties: *mut vk::TilePropertiesQCOM,
22422
0
    ) -> vk::Result {
22423
0
        let global = Self::instance();
22424
0
        // vkGetFramebufferTilePropertiesQCOM
22425
0
        let device_info = global.get_device_info(device).unwrap();
22426
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22427
0
        let layer_result = device_info
22428
0
            .customized_info
22429
0
            .borrow()
22430
0
            .hooks()
22431
0
            .get_framebuffer_tile_properties_qcom(
22432
0
                framebuffer,
22433
0
                unsafe { ptr_as_uninit_mut(p_properties_count) }.unwrap(),
22434
0
                unsafe { maybe_uninit_slice_from_raw_parts_mut(p_properties, p_properties_count) },
22435
0
            );
22436
0
        match layer_result {
22437
0
            LayerResult::Handled(res) => match res {
22438
0
                Ok(()) => vk::Result::SUCCESS,
22439
0
                Err(e) => e,
22440
            },
22441
            LayerResult::Unhandled => unsafe {
22442
0
                (dispatch_table.get_framebuffer_tile_properties_qcom)(
22443
0
                    device,
22444
0
                    framebuffer,
22445
0
                    p_properties_count,
22446
0
                    p_properties,
22447
0
                )
22448
            },
22449
        }
22450
0
    }
22451
0
    extern "system" fn get_dynamic_rendering_tile_properties_qcom(
22452
0
        device: vk::Device,
22453
0
        p_rendering_info: *const vk::RenderingInfo,
22454
0
        p_properties: *mut vk::TilePropertiesQCOM,
22455
0
    ) -> vk::Result {
22456
0
        let global = Self::instance();
22457
0
        // vkGetDynamicRenderingTilePropertiesQCOM
22458
0
        let device_info = global.get_device_info(device).unwrap();
22459
0
        let dispatch_table = &device_info.dispatch_table.qcom_tile_properties;
22460
0
        let layer_result = device_info
22461
0
            .customized_info
22462
0
            .borrow()
22463
0
            .hooks()
22464
0
            .get_dynamic_rendering_tile_properties_qcom(
22465
0
                unsafe { p_rendering_info.as_ref() }.unwrap(),
22466
0
                unsafe { ptr_as_uninit_mut(p_properties) }.unwrap(),
22467
0
            );
22468
0
        match layer_result {
22469
0
            LayerResult::Handled(res) => match res {
22470
0
                Ok(()) => vk::Result::SUCCESS,
22471
0
                Err(e) => e,
22472
            },
22473
            LayerResult::Unhandled => unsafe {
22474
0
                (dispatch_table.get_dynamic_rendering_tile_properties_qcom)(
22475
0
                    device,
22476
0
                    p_rendering_info,
22477
0
                    p_properties,
22478
0
                )
22479
            },
22480
        }
22481
0
    }
22482
0
    extern "system" fn create_acceleration_structure_khr(
22483
0
        device: vk::Device,
22484
0
        p_create_info: *const vk::AccelerationStructureCreateInfoKHR,
22485
0
        p_allocator: *const vk::AllocationCallbacks,
22486
0
        p_acceleration_structure: *mut vk::AccelerationStructureKHR,
22487
0
    ) -> vk::Result {
22488
0
        let global = Self::instance();
22489
0
        // vkCreateAccelerationStructureKHR
22490
0
        let device_info = global.get_device_info(device).unwrap();
22491
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22492
0
        let layer_result = device_info
22493
0
            .customized_info
22494
0
            .borrow()
22495
0
            .hooks()
22496
0
            .create_acceleration_structure_khr(
22497
0
                unsafe { p_create_info.as_ref() }.unwrap(),
22498
0
                unsafe { p_allocator.as_ref() },
22499
0
            );
22500
0
        match layer_result {
22501
0
            LayerResult::Handled(res) => match res {
22502
0
                Ok(res) => {
22503
0
                    *unsafe { p_acceleration_structure.as_mut() }.unwrap() = res;
22504
0
                    vk::Result::SUCCESS
22505
                }
22506
0
                Err(e) => e,
22507
            },
22508
            LayerResult::Unhandled => unsafe {
22509
0
                (dispatch_table.create_acceleration_structure_khr)(
22510
0
                    device,
22511
0
                    p_create_info,
22512
0
                    p_allocator,
22513
0
                    p_acceleration_structure,
22514
0
                )
22515
            },
22516
        }
22517
0
    }
22518
0
    extern "system" fn destroy_acceleration_structure_khr(
22519
0
        device: vk::Device,
22520
0
        acceleration_structure: vk::AccelerationStructureKHR,
22521
0
        p_allocator: *const vk::AllocationCallbacks,
22522
0
    ) {
22523
0
        let global = Self::instance();
22524
0
        // vkDestroyAccelerationStructureKHR
22525
0
        let device_info = global.get_device_info(device).unwrap();
22526
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22527
0
        let layer_result = device_info
22528
0
            .customized_info
22529
0
            .borrow()
22530
0
            .hooks()
22531
0
            .destroy_acceleration_structure_khr(acceleration_structure, unsafe {
22532
0
                p_allocator.as_ref()
22533
0
            });
22534
0
        match layer_result {
22535
0
            LayerResult::Handled(res) => res,
22536
            LayerResult::Unhandled => unsafe {
22537
0
                (dispatch_table.destroy_acceleration_structure_khr)(
22538
0
                    device,
22539
0
                    acceleration_structure,
22540
0
                    p_allocator,
22541
0
                )
22542
            },
22543
        }
22544
0
    }
22545
0
    extern "system" fn copy_acceleration_structure_khr(
22546
0
        device: vk::Device,
22547
0
        deferred_operation: vk::DeferredOperationKHR,
22548
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
22549
0
    ) -> vk::Result {
22550
0
        let global = Self::instance();
22551
0
        // vkCopyAccelerationStructureKHR
22552
0
        let device_info = global.get_device_info(device).unwrap();
22553
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22554
0
        let layer_result = device_info
22555
0
            .customized_info
22556
0
            .borrow()
22557
0
            .hooks()
22558
0
            .copy_acceleration_structure_khr(
22559
0
                deferred_operation,
22560
0
                unsafe { p_info.as_ref() }.unwrap(),
22561
0
            );
22562
0
        match layer_result {
22563
0
            LayerResult::Handled(res) => match res {
22564
0
                Ok(()) => vk::Result::SUCCESS,
22565
0
                Err(e) => e,
22566
            },
22567
            LayerResult::Unhandled => unsafe {
22568
0
                (dispatch_table.copy_acceleration_structure_khr)(device, deferred_operation, p_info)
22569
            },
22570
        }
22571
0
    }
22572
0
    extern "system" fn copy_acceleration_structure_to_memory_khr(
22573
0
        device: vk::Device,
22574
0
        deferred_operation: vk::DeferredOperationKHR,
22575
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
22576
0
    ) -> vk::Result {
22577
0
        let global = Self::instance();
22578
0
        // vkCopyAccelerationStructureToMemoryKHR
22579
0
        let device_info = global.get_device_info(device).unwrap();
22580
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22581
0
        let layer_result = device_info
22582
0
            .customized_info
22583
0
            .borrow()
22584
0
            .hooks()
22585
0
            .copy_acceleration_structure_to_memory_khr(
22586
0
                deferred_operation,
22587
0
                unsafe { p_info.as_ref() }.unwrap(),
22588
0
            );
22589
0
        match layer_result {
22590
0
            LayerResult::Handled(res) => match res {
22591
0
                Ok(()) => vk::Result::SUCCESS,
22592
0
                Err(e) => e,
22593
            },
22594
            LayerResult::Unhandled => unsafe {
22595
0
                (dispatch_table.copy_acceleration_structure_to_memory_khr)(
22596
0
                    device,
22597
0
                    deferred_operation,
22598
0
                    p_info,
22599
0
                )
22600
            },
22601
        }
22602
0
    }
22603
0
    extern "system" fn copy_memory_to_acceleration_structure_khr(
22604
0
        device: vk::Device,
22605
0
        deferred_operation: vk::DeferredOperationKHR,
22606
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
22607
0
    ) -> vk::Result {
22608
0
        let global = Self::instance();
22609
0
        // vkCopyMemoryToAccelerationStructureKHR
22610
0
        let device_info = global.get_device_info(device).unwrap();
22611
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22612
0
        let layer_result = device_info
22613
0
            .customized_info
22614
0
            .borrow()
22615
0
            .hooks()
22616
0
            .copy_memory_to_acceleration_structure_khr(
22617
0
                deferred_operation,
22618
0
                unsafe { p_info.as_ref() }.unwrap(),
22619
0
            );
22620
0
        match layer_result {
22621
0
            LayerResult::Handled(res) => match res {
22622
0
                Ok(()) => vk::Result::SUCCESS,
22623
0
                Err(e) => e,
22624
            },
22625
            LayerResult::Unhandled => unsafe {
22626
0
                (dispatch_table.copy_memory_to_acceleration_structure_khr)(
22627
0
                    device,
22628
0
                    deferred_operation,
22629
0
                    p_info,
22630
0
                )
22631
            },
22632
        }
22633
0
    }
22634
0
    extern "system" fn write_acceleration_structures_properties_khr(
22635
0
        device: vk::Device,
22636
0
        acceleration_structure_count: u32,
22637
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
22638
0
        query_type: vk::QueryType,
22639
0
        data_size: usize,
22640
0
        p_data: *mut c_void,
22641
0
        stride: usize,
22642
0
    ) -> vk::Result {
22643
0
        let global = Self::instance();
22644
0
        // vkWriteAccelerationStructuresPropertiesKHR
22645
0
        let device_info = global.get_device_info(device).unwrap();
22646
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22647
0
        let layer_result = device_info
22648
0
            .customized_info
22649
0
            .borrow()
22650
0
            .hooks()
22651
0
            .write_acceleration_structures_properties_khr(
22652
0
                unsafe {
22653
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
22654
0
                },
22655
0
                query_type,
22656
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
22657
0
                stride,
22658
0
            );
22659
0
        match layer_result {
22660
0
            LayerResult::Handled(res) => match res {
22661
0
                Ok(()) => vk::Result::SUCCESS,
22662
0
                Err(e) => e,
22663
            },
22664
            LayerResult::Unhandled => unsafe {
22665
0
                (dispatch_table.write_acceleration_structures_properties_khr)(
22666
0
                    device,
22667
0
                    acceleration_structure_count,
22668
0
                    p_acceleration_structures,
22669
0
                    query_type,
22670
0
                    data_size,
22671
0
                    p_data,
22672
0
                    stride,
22673
0
                )
22674
            },
22675
        }
22676
0
    }
22677
0
    extern "system" fn cmd_copy_acceleration_structure_khr(
22678
0
        command_buffer: vk::CommandBuffer,
22679
0
        p_info: *const vk::CopyAccelerationStructureInfoKHR,
22680
0
    ) {
22681
0
        let global = Self::instance();
22682
0
        // vkCmdCopyAccelerationStructureKHR
22683
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22684
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22685
0
        let layer_result = device_info
22686
0
            .customized_info
22687
0
            .borrow()
22688
0
            .hooks()
22689
0
            .cmd_copy_acceleration_structure_khr(
22690
0
                command_buffer,
22691
0
                unsafe { p_info.as_ref() }.unwrap(),
22692
0
            );
22693
0
        match layer_result {
22694
0
            LayerResult::Handled(res) => res,
22695
            LayerResult::Unhandled => unsafe {
22696
0
                (dispatch_table.cmd_copy_acceleration_structure_khr)(command_buffer, p_info)
22697
            },
22698
        }
22699
0
    }
22700
0
    extern "system" fn cmd_copy_acceleration_structure_to_memory_khr(
22701
0
        command_buffer: vk::CommandBuffer,
22702
0
        p_info: *const vk::CopyAccelerationStructureToMemoryInfoKHR,
22703
0
    ) {
22704
0
        let global = Self::instance();
22705
0
        // vkCmdCopyAccelerationStructureToMemoryKHR
22706
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22707
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22708
0
        let layer_result = device_info
22709
0
            .customized_info
22710
0
            .borrow()
22711
0
            .hooks()
22712
0
            .cmd_copy_acceleration_structure_to_memory_khr(
22713
0
                command_buffer,
22714
0
                unsafe { p_info.as_ref() }.unwrap(),
22715
0
            );
22716
0
        match layer_result {
22717
0
            LayerResult::Handled(res) => res,
22718
            LayerResult::Unhandled => unsafe {
22719
0
                (dispatch_table.cmd_copy_acceleration_structure_to_memory_khr)(
22720
0
                    command_buffer,
22721
0
                    p_info,
22722
0
                )
22723
            },
22724
        }
22725
0
    }
22726
0
    extern "system" fn cmd_copy_memory_to_acceleration_structure_khr(
22727
0
        command_buffer: vk::CommandBuffer,
22728
0
        p_info: *const vk::CopyMemoryToAccelerationStructureInfoKHR,
22729
0
    ) {
22730
0
        let global = Self::instance();
22731
0
        // vkCmdCopyMemoryToAccelerationStructureKHR
22732
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22733
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22734
0
        let layer_result = device_info
22735
0
            .customized_info
22736
0
            .borrow()
22737
0
            .hooks()
22738
0
            .cmd_copy_memory_to_acceleration_structure_khr(
22739
0
                command_buffer,
22740
0
                unsafe { p_info.as_ref() }.unwrap(),
22741
0
            );
22742
0
        match layer_result {
22743
0
            LayerResult::Handled(res) => res,
22744
            LayerResult::Unhandled => unsafe {
22745
0
                (dispatch_table.cmd_copy_memory_to_acceleration_structure_khr)(
22746
0
                    command_buffer,
22747
0
                    p_info,
22748
0
                )
22749
            },
22750
        }
22751
0
    }
22752
0
    extern "system" fn get_acceleration_structure_device_address_khr(
22753
0
        device: vk::Device,
22754
0
        p_info: *const vk::AccelerationStructureDeviceAddressInfoKHR,
22755
0
    ) -> vk::DeviceAddress {
22756
0
        let global = Self::instance();
22757
0
        // vkGetAccelerationStructureDeviceAddressKHR
22758
0
        let device_info = global.get_device_info(device).unwrap();
22759
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22760
0
        let layer_result = device_info
22761
0
            .customized_info
22762
0
            .borrow()
22763
0
            .hooks()
22764
0
            .get_acceleration_structure_device_address_khr(unsafe { p_info.as_ref() }.unwrap());
22765
0
        match layer_result {
22766
0
            LayerResult::Handled(res) => res,
22767
            LayerResult::Unhandled => unsafe {
22768
0
                (dispatch_table.get_acceleration_structure_device_address_khr)(device, p_info)
22769
            },
22770
        }
22771
0
    }
22772
0
    extern "system" fn cmd_write_acceleration_structures_properties_khr(
22773
0
        command_buffer: vk::CommandBuffer,
22774
0
        acceleration_structure_count: u32,
22775
0
        p_acceleration_structures: *const vk::AccelerationStructureKHR,
22776
0
        query_type: vk::QueryType,
22777
0
        query_pool: vk::QueryPool,
22778
0
        first_query: u32,
22779
0
    ) {
22780
0
        let global = Self::instance();
22781
0
        // vkCmdWriteAccelerationStructuresPropertiesKHR
22782
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22783
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22784
0
        let layer_result = device_info
22785
0
            .customized_info
22786
0
            .borrow()
22787
0
            .hooks()
22788
0
            .cmd_write_acceleration_structures_properties_khr(
22789
0
                command_buffer,
22790
0
                unsafe {
22791
0
                    slice_from_raw_parts(p_acceleration_structures, acceleration_structure_count)
22792
0
                },
22793
0
                query_type,
22794
0
                query_pool,
22795
0
                first_query,
22796
0
            );
22797
0
        match layer_result {
22798
0
            LayerResult::Handled(res) => res,
22799
            LayerResult::Unhandled => unsafe {
22800
0
                (dispatch_table.cmd_write_acceleration_structures_properties_khr)(
22801
0
                    command_buffer,
22802
0
                    acceleration_structure_count,
22803
0
                    p_acceleration_structures,
22804
0
                    query_type,
22805
0
                    query_pool,
22806
0
                    first_query,
22807
0
                )
22808
            },
22809
        }
22810
0
    }
22811
0
    extern "system" fn get_device_acceleration_structure_compatibility_khr(
22812
0
        device: vk::Device,
22813
0
        p_version_info: *const vk::AccelerationStructureVersionInfoKHR,
22814
0
        p_compatibility: *mut vk::AccelerationStructureCompatibilityKHR,
22815
0
    ) {
22816
0
        let global = Self::instance();
22817
0
        // vkGetDeviceAccelerationStructureCompatibilityKHR
22818
0
        let device_info = global.get_device_info(device).unwrap();
22819
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22820
0
        let layer_result = device_info
22821
0
            .customized_info
22822
0
            .borrow()
22823
0
            .hooks()
22824
0
            .get_device_acceleration_structure_compatibility_khr(
22825
0
                unsafe { p_version_info.as_ref() }.unwrap(),
22826
0
            );
22827
0
        match layer_result {
22828
0
            LayerResult::Handled(res) => {
22829
0
                *unsafe { p_compatibility.as_mut() }.unwrap() = res;
22830
0
            }
22831
            LayerResult::Unhandled => unsafe {
22832
0
                (dispatch_table.get_device_acceleration_structure_compatibility_khr)(
22833
0
                    device,
22834
0
                    p_version_info,
22835
0
                    p_compatibility,
22836
0
                )
22837
            },
22838
        }
22839
0
    }
22840
0
    extern "system" fn get_acceleration_structure_build_sizes_khr(
22841
0
        device: vk::Device,
22842
0
        build_type: vk::AccelerationStructureBuildTypeKHR,
22843
0
        p_build_info: *const vk::AccelerationStructureBuildGeometryInfoKHR,
22844
0
        p_max_primitive_counts: *const u32,
22845
0
        p_size_info: *mut vk::AccelerationStructureBuildSizesInfoKHR,
22846
0
    ) {
22847
0
        let global = Self::instance();
22848
0
        // vkGetAccelerationStructureBuildSizesKHR
22849
0
        let device_info = global.get_device_info(device).unwrap();
22850
0
        let dispatch_table = &device_info.dispatch_table.khr_acceleration_structure;
22851
0
        let layer_result = device_info
22852
0
            .customized_info
22853
0
            .borrow()
22854
0
            .hooks()
22855
0
            .get_acceleration_structure_build_sizes_khr(
22856
0
                build_type,
22857
0
                unsafe { p_build_info.as_ref() }.unwrap(),
22858
0
                unsafe {
22859
0
                    maybe_slice_from_raw_parts(
22860
0
                        p_max_primitive_counts,
22861
0
                        unsafe { p_build_info.as_ref() }.unwrap().geometry_count,
22862
0
                    )
22863
0
                },
22864
0
                unsafe { ptr_as_uninit_mut(p_size_info) }.unwrap(),
22865
0
            );
22866
0
        match layer_result {
22867
0
            LayerResult::Handled(res) => res,
22868
            LayerResult::Unhandled => unsafe {
22869
0
                (dispatch_table.get_acceleration_structure_build_sizes_khr)(
22870
0
                    device,
22871
0
                    build_type,
22872
0
                    p_build_info,
22873
0
                    p_max_primitive_counts,
22874
0
                    p_size_info,
22875
0
                )
22876
            },
22877
        }
22878
0
    }
22879
0
    extern "system" fn cmd_trace_rays_khr(
22880
0
        command_buffer: vk::CommandBuffer,
22881
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22882
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22883
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22884
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
22885
0
        width: u32,
22886
0
        height: u32,
22887
0
        depth: u32,
22888
0
    ) {
22889
0
        let global = Self::instance();
22890
0
        // vkCmdTraceRaysKHR
22891
0
        let device_info = global.get_device_info(command_buffer).unwrap();
22892
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22893
0
        let layer_result = device_info
22894
0
            .customized_info
22895
0
            .borrow()
22896
0
            .hooks()
22897
0
            .cmd_trace_rays_khr(
22898
0
                command_buffer,
22899
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
22900
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
22901
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
22902
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
22903
0
                width,
22904
0
                height,
22905
0
                depth,
22906
0
            );
22907
0
        match layer_result {
22908
0
            LayerResult::Handled(res) => res,
22909
            LayerResult::Unhandled => unsafe {
22910
0
                (dispatch_table.cmd_trace_rays_khr)(
22911
0
                    command_buffer,
22912
0
                    p_raygen_shader_binding_table,
22913
0
                    p_miss_shader_binding_table,
22914
0
                    p_hit_shader_binding_table,
22915
0
                    p_callable_shader_binding_table,
22916
0
                    width,
22917
0
                    height,
22918
0
                    depth,
22919
0
                )
22920
            },
22921
        }
22922
0
    }
22923
0
    extern "system" fn create_ray_tracing_pipelines_khr(
22924
0
        device: vk::Device,
22925
0
        deferred_operation: vk::DeferredOperationKHR,
22926
0
        pipeline_cache: vk::PipelineCache,
22927
0
        create_info_count: u32,
22928
0
        p_create_infos: *const vk::RayTracingPipelineCreateInfoKHR,
22929
0
        p_allocator: *const vk::AllocationCallbacks,
22930
0
        p_pipelines: *mut vk::Pipeline,
22931
0
    ) -> vk::Result {
22932
0
        let global = Self::instance();
22933
0
        // vkCreateRayTracingPipelinesKHR
22934
0
        let device_info = global.get_device_info(device).unwrap();
22935
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22936
0
        let layer_result = device_info
22937
0
            .customized_info
22938
0
            .borrow()
22939
0
            .hooks()
22940
0
            .create_ray_tracing_pipelines_khr(
22941
0
                deferred_operation,
22942
0
                pipeline_cache,
22943
0
                unsafe { slice_from_raw_parts(p_create_infos, create_info_count) },
22944
0
                unsafe { p_allocator.as_ref() },
22945
0
            );
22946
0
        match layer_result {
22947
0
            LayerResult::Handled(res) => match res {
22948
0
                Ok(res) => {
22949
0
                    unsafe {
22950
0
                        std::slice::from_raw_parts_mut(
22951
0
                            p_pipelines,
22952
0
                            create_info_count.try_into().unwrap(),
22953
0
                        )
22954
0
                    }
22955
0
                    .copy_from_slice(&res);
22956
0
                    vk::Result::SUCCESS
22957
                }
22958
0
                Err(e) => e,
22959
            },
22960
            LayerResult::Unhandled => unsafe {
22961
0
                (dispatch_table.create_ray_tracing_pipelines_khr)(
22962
0
                    device,
22963
0
                    deferred_operation,
22964
0
                    pipeline_cache,
22965
0
                    create_info_count,
22966
0
                    p_create_infos,
22967
0
                    p_allocator,
22968
0
                    p_pipelines,
22969
0
                )
22970
            },
22971
        }
22972
0
    }
22973
0
    extern "system" fn get_ray_tracing_capture_replay_shader_group_handles_khr(
22974
0
        device: vk::Device,
22975
0
        pipeline: vk::Pipeline,
22976
0
        first_group: u32,
22977
0
        group_count: u32,
22978
0
        data_size: usize,
22979
0
        p_data: *mut c_void,
22980
0
    ) -> vk::Result {
22981
0
        let global = Self::instance();
22982
0
        // vkGetRayTracingCaptureReplayShaderGroupHandlesKHR
22983
0
        let device_info = global.get_device_info(device).unwrap();
22984
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
22985
0
        let layer_result = device_info
22986
0
            .customized_info
22987
0
            .borrow()
22988
0
            .hooks()
22989
0
            .get_ray_tracing_capture_replay_shader_group_handles_khr(
22990
0
                pipeline,
22991
0
                first_group,
22992
0
                group_count,
22993
0
                unsafe { uninit_slice_from_raw_parts_mut(p_data as *mut u8, data_size) },
22994
0
            );
22995
0
        match layer_result {
22996
0
            LayerResult::Handled(res) => match res {
22997
0
                Ok(()) => vk::Result::SUCCESS,
22998
0
                Err(e) => e,
22999
            },
23000
            LayerResult::Unhandled => unsafe {
23001
0
                (dispatch_table.get_ray_tracing_capture_replay_shader_group_handles_khr)(
23002
0
                    device,
23003
0
                    pipeline,
23004
0
                    first_group,
23005
0
                    group_count,
23006
0
                    data_size,
23007
0
                    p_data,
23008
0
                )
23009
            },
23010
        }
23011
0
    }
23012
0
    extern "system" fn cmd_trace_rays_indirect_khr(
23013
0
        command_buffer: vk::CommandBuffer,
23014
0
        p_raygen_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23015
0
        p_miss_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23016
0
        p_hit_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23017
0
        p_callable_shader_binding_table: *const vk::StridedDeviceAddressRegionKHR,
23018
0
        indirect_device_address: vk::DeviceAddress,
23019
0
    ) {
23020
0
        let global = Self::instance();
23021
0
        // vkCmdTraceRaysIndirectKHR
23022
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23023
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23024
0
        let layer_result = device_info
23025
0
            .customized_info
23026
0
            .borrow()
23027
0
            .hooks()
23028
0
            .cmd_trace_rays_indirect_khr(
23029
0
                command_buffer,
23030
0
                unsafe { p_raygen_shader_binding_table.as_ref() }.unwrap(),
23031
0
                unsafe { p_miss_shader_binding_table.as_ref() }.unwrap(),
23032
0
                unsafe { p_hit_shader_binding_table.as_ref() }.unwrap(),
23033
0
                unsafe { p_callable_shader_binding_table.as_ref() }.unwrap(),
23034
0
                indirect_device_address,
23035
0
            );
23036
0
        match layer_result {
23037
0
            LayerResult::Handled(res) => res,
23038
            LayerResult::Unhandled => unsafe {
23039
0
                (dispatch_table.cmd_trace_rays_indirect_khr)(
23040
0
                    command_buffer,
23041
0
                    p_raygen_shader_binding_table,
23042
0
                    p_miss_shader_binding_table,
23043
0
                    p_hit_shader_binding_table,
23044
0
                    p_callable_shader_binding_table,
23045
0
                    indirect_device_address,
23046
0
                )
23047
            },
23048
        }
23049
0
    }
23050
0
    extern "system" fn get_ray_tracing_shader_group_stack_size_khr(
23051
0
        device: vk::Device,
23052
0
        pipeline: vk::Pipeline,
23053
0
        group: u32,
23054
0
        group_shader: vk::ShaderGroupShaderKHR,
23055
0
    ) -> vk::DeviceSize {
23056
0
        let global = Self::instance();
23057
0
        // vkGetRayTracingShaderGroupStackSizeKHR
23058
0
        let device_info = global.get_device_info(device).unwrap();
23059
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23060
0
        let layer_result = device_info
23061
0
            .customized_info
23062
0
            .borrow()
23063
0
            .hooks()
23064
0
            .get_ray_tracing_shader_group_stack_size_khr(pipeline, group, group_shader);
23065
0
        match layer_result {
23066
0
            LayerResult::Handled(res) => res,
23067
            LayerResult::Unhandled => unsafe {
23068
0
                (dispatch_table.get_ray_tracing_shader_group_stack_size_khr)(
23069
0
                    device,
23070
0
                    pipeline,
23071
0
                    group,
23072
0
                    group_shader,
23073
0
                )
23074
            },
23075
        }
23076
0
    }
23077
0
    extern "system" fn cmd_set_ray_tracing_pipeline_stack_size_khr(
23078
0
        command_buffer: vk::CommandBuffer,
23079
0
        pipeline_stack_size: u32,
23080
0
    ) {
23081
0
        let global = Self::instance();
23082
0
        // vkCmdSetRayTracingPipelineStackSizeKHR
23083
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23084
0
        let dispatch_table = &device_info.dispatch_table.khr_ray_tracing_pipeline;
23085
0
        let layer_result = device_info
23086
0
            .customized_info
23087
0
            .borrow()
23088
0
            .hooks()
23089
0
            .cmd_set_ray_tracing_pipeline_stack_size_khr(command_buffer, pipeline_stack_size);
23090
0
        match layer_result {
23091
0
            LayerResult::Handled(res) => res,
23092
            LayerResult::Unhandled => unsafe {
23093
0
                (dispatch_table.cmd_set_ray_tracing_pipeline_stack_size_khr)(
23094
0
                    command_buffer,
23095
0
                    pipeline_stack_size,
23096
0
                )
23097
            },
23098
        }
23099
0
    }
23100
0
    extern "system" fn cmd_draw_mesh_tasks_ext(
23101
0
        command_buffer: vk::CommandBuffer,
23102
0
        group_countx: u32,
23103
0
        group_county: u32,
23104
0
        group_countz: u32,
23105
0
    ) {
23106
0
        let global = Self::instance();
23107
0
        // vkCmdDrawMeshTasksEXT
23108
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23109
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23110
0
        let layer_result = device_info
23111
0
            .customized_info
23112
0
            .borrow()
23113
0
            .hooks()
23114
0
            .cmd_draw_mesh_tasks_ext(command_buffer, group_countx, group_county, group_countz);
23115
0
        match layer_result {
23116
0
            LayerResult::Handled(res) => res,
23117
            LayerResult::Unhandled => unsafe {
23118
0
                (dispatch_table.cmd_draw_mesh_tasks_ext)(
23119
0
                    command_buffer,
23120
0
                    group_countx,
23121
0
                    group_county,
23122
0
                    group_countz,
23123
0
                )
23124
            },
23125
        }
23126
0
    }
23127
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_ext(
23128
0
        command_buffer: vk::CommandBuffer,
23129
0
        buffer: vk::Buffer,
23130
0
        offset: vk::DeviceSize,
23131
0
        draw_count: u32,
23132
0
        stride: u32,
23133
0
    ) {
23134
0
        let global = Self::instance();
23135
0
        // vkCmdDrawMeshTasksIndirectEXT
23136
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23137
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23138
0
        let layer_result = device_info
23139
0
            .customized_info
23140
0
            .borrow()
23141
0
            .hooks()
23142
0
            .cmd_draw_mesh_tasks_indirect_ext(command_buffer, buffer, offset, draw_count, stride);
23143
0
        match layer_result {
23144
0
            LayerResult::Handled(res) => res,
23145
            LayerResult::Unhandled => unsafe {
23146
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_ext)(
23147
0
                    command_buffer,
23148
0
                    buffer,
23149
0
                    offset,
23150
0
                    draw_count,
23151
0
                    stride,
23152
0
                )
23153
            },
23154
        }
23155
0
    }
23156
0
    extern "system" fn cmd_draw_mesh_tasks_indirect_count_ext(
23157
0
        command_buffer: vk::CommandBuffer,
23158
0
        buffer: vk::Buffer,
23159
0
        offset: vk::DeviceSize,
23160
0
        count_buffer: vk::Buffer,
23161
0
        count_buffer_offset: vk::DeviceSize,
23162
0
        max_draw_count: u32,
23163
0
        stride: u32,
23164
0
    ) {
23165
0
        let global = Self::instance();
23166
0
        // vkCmdDrawMeshTasksIndirectCountEXT
23167
0
        let device_info = global.get_device_info(command_buffer).unwrap();
23168
0
        let dispatch_table = &device_info.dispatch_table.ext_mesh_shader;
23169
0
        let layer_result = device_info
23170
0
            .customized_info
23171
0
            .borrow()
23172
0
            .hooks()
23173
0
            .cmd_draw_mesh_tasks_indirect_count_ext(
23174
0
                command_buffer,
23175
0
                buffer,
23176
0
                offset,
23177
0
                count_buffer,
23178
0
                count_buffer_offset,
23179
0
                max_draw_count,
23180
0
                stride,
23181
0
            );
23182
0
        match layer_result {
23183
0
            LayerResult::Handled(res) => res,
23184
            LayerResult::Unhandled => unsafe {
23185
0
                (dispatch_table.cmd_draw_mesh_tasks_indirect_count_ext)(
23186
0
                    command_buffer,
23187
0
                    buffer,
23188
0
                    offset,
23189
0
                    count_buffer,
23190
0
                    count_buffer_offset,
23191
0
                    max_draw_count,
23192
0
                    stride,
23193
0
                )
23194
            },
23195
        }
23196
0
    }
23197
}